diff options
Diffstat (limited to 'asmrun/signals_asm.c')
-rw-r--r-- | asmrun/signals_asm.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/asmrun/signals_asm.c b/asmrun/signals_asm.c index fb22f8baf..a1ef94268 100644 --- a/asmrun/signals_asm.c +++ b/asmrun/signals_asm.c @@ -17,6 +17,7 @@ #define _GNU_SOURCE #endif #include <signal.h> +#include <errno.h> #include <stdio.h> #include "fail.h" #include "memory.h" @@ -73,6 +74,9 @@ void caml_garbage_collection(void) DECLARE_SIGNAL_HANDLER(handle_signal) { + int saved_errno; + /* Save the value of errno (PR#5982). */ + saved_errno = errno; #if !defined(POSIX_SIGNALS) && !defined(BSD_SIGNALS) signal(sig, handle_signal); #endif @@ -90,6 +94,7 @@ DECLARE_SIGNAL_HANDLER(handle_signal) CONTEXT_YOUNG_LIMIT = (context_reg) caml_young_limit; #endif } + errno = saved_errno; } int caml_set_signal_action(int signo, int action) |