summaryrefslogtreecommitdiff
path: root/rubysig.h
diff options
context:
space:
mode:
Diffstat (limited to 'rubysig.h')
-rw-r--r--rubysig.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/rubysig.h b/rubysig.h
index 88b30830d9..1975215ef0 100644
--- a/rubysig.h
+++ b/rubysig.h
@@ -37,8 +37,12 @@ typedef int rb_atomic_t;
# define ATOMIC_INC(var) (++(var))
# define ATOMIC_DEC(var) (--(var))
-# define TRAP_BEG (rb_trap_immediate=1)
-# define TRAP_END (rb_trap_immediate=0)
+# define TRAP_BEG do {\
+ int trap_immediate = rb_trap_immediate;\
+ rb_trap_immediate = 1;
+# define TRAP_END rb_trap_immediate = trap_immediate;\
+} while (0)
+
# define RUBY_CRITICAL(statements) do {\
int trap_immediate = rb_trap_immediate;\
rb_trap_immediate = 0;\