diff options
Diffstat (limited to 'byterun/finalise.c')
-rw-r--r-- | byterun/finalise.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/byterun/finalise.c b/byterun/finalise.c index 685155810..bc7996d55 100644 --- a/byterun/finalise.c +++ b/byterun/finalise.c @@ -122,6 +122,7 @@ static int running_finalisation_function = 0; void caml_final_do_calls (void) { struct final f; + value res; if (running_finalisation_function) return; @@ -139,8 +140,9 @@ void caml_final_do_calls (void) -- to_do_hd->size; f = to_do_hd->item[to_do_hd->size]; running_finalisation_function = 1; - caml_callback (f.fun, f.val + f.offset); /* FIXME PR#4742 */ + res = caml_callback_exn (f.fun, f.val + f.offset); running_finalisation_function = 0; + if (Is_exception_result (res)) caml_raise (Extract_exception (res)); } caml_gc_message (0x80, "Done calling finalisation functions.\n", 0); } |