diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 1996-07-17 08:40:50 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 1996-07-17 08:40:50 +0000 |
commit | 77c04d429feaabb6d84b794bf8d3f03404d443d2 (patch) | |
tree | 56ab0e37439f89f193d407e8b5b50a3f600a4ecd /byterun/fail.c | |
parent | 99b6855c902b17db0c2b8850c265e3b343879f3c (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.c | 10 |
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) |