summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--byterun/fail.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/byterun/fail.c b/byterun/fail.c
index 98be20838..52fae0f3e 100644
--- a/byterun/fail.c
+++ b/byterun/fail.c
@@ -27,7 +27,7 @@ value exn_bucket;
void mlraise(v)
value v;
{
- leave_blocking_section();
+ Assert(! async_signal_mode);
exn_bucket = v;
siglongjmp(external_raise->buf, 1);
}
@@ -63,7 +63,13 @@ void raise_with_string(tag, msg)
value tag;
char * msg;
{
- raise_with_arg(tag, copy_string(msg));
+ value vmsg;
+ Push_roots(r, 1);
+ r[0] = tag;
+ vmsg = copy_string(msg);
+ tag = r[0];
+ Pop_roots();
+ raise_with_arg(tag, vmsg);
}
void failwith (msg)