summaryrefslogtreecommitdiff
path: root/rubysig.h
diff options
context:
space:
mode:
Diffstat (limited to 'rubysig.h')
-rw-r--r--rubysig.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/rubysig.h b/rubysig.h
index 8871e3aa03..fd43e85d28 100644
--- a/rubysig.h
+++ b/rubysig.h
@@ -46,10 +46,13 @@ typedef int rb_atomic_t;
# define ATOMIC_DEC(var) (--(var))
# define TRAP_BEG do {\
+ int saved_errno = 0;\
int trap_immediate = rb_trap_immediate;\
rb_trap_immediate = 1
# define TRAP_END rb_trap_immediate = trap_immediate;\
- CHECK_INTS;\
+ saved_errno = errno;\
+ CHECK_INTS;\
+ errno = saved_errno;\
} while (0)
# define RUBY_CRITICAL(statements) do {\