summaryrefslogtreecommitdiffstats
path: root/byterun/finalise.c
diff options
context:
space:
mode:
Diffstat (limited to 'byterun/finalise.c')
-rw-r--r--byterun/finalise.c4
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);
}