summaryrefslogtreecommitdiffstats
path: root/byterun/fail.c
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>1996-07-17 08:40:50 +0000
committerXavier Leroy <xavier.leroy@inria.fr>1996-07-17 08:40:50 +0000
commit77c04d429feaabb6d84b794bf8d3f03404d443d2 (patch)
tree56ab0e37439f89f193d407e8b5b50a3f600a4ecd /byterun/fail.c
parent99b6855c902b17db0c2b8850c265e3b343879f3c (diff)
Ne pas faire leave_blocking_section dans mlraise.
Bug d'allocation dans raise_with_string. git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@932 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'byterun/fail.c')
-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)