summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKunshan Wang <wks1986@gmail.com>2023-05-15 12:08:00 +0800
committerNobuyoshi Nakada <nobu@ruby-lang.org>2023-05-15 15:12:30 +0900
commitc7067ed13d6cbe7fd8ba25418d2881f40fc4cbab (patch)
tree981a317f2e32295f75546884be8e4c028261d3c2
parent8bd4d8867a0222a3c30a0c7ee1f69b06baa8e91a (diff)
downloadruby-c7067ed13d6cbe7fd8ba25418d2881f40fc4cbab.tar.gz
Use the rb_sys_fail_str macro in signal.c
Let signal.c include "internal/error.h" explicitly to ensure that the identifier rb_sys_fail_str in signal.c refers to the macro defined in "internal/error.h" instead of the actual function. That macro reads errno before evaluating its argument. Without this change, the rb_signo2signm(sig) expression in the "trap" function in signal.c will overwrite the errno before the actual rb_sys_fail_str function reads the errno.
-rw-r--r--common.mk1
-rw-r--r--signal.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/common.mk b/common.mk
index 6f0b785a8c..75247ddeb3 100644
--- a/common.mk
+++ b/common.mk
@@ -14436,6 +14436,7 @@ signal.$(OBJEXT): $(hdrdir)/ruby/ruby.h
signal.$(OBJEXT): $(top_srcdir)/internal/array.h
signal.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
signal.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+signal.$(OBJEXT): $(top_srcdir)/internal/error.h
signal.$(OBJEXT): $(top_srcdir)/internal/eval.h
signal.$(OBJEXT): $(top_srcdir)/internal/gc.h
signal.$(OBJEXT): $(top_srcdir)/internal/imemo.h
diff --git a/signal.c b/signal.c
index b7a8dbe4dd..2487882fdd 100644
--- a/signal.c
+++ b/signal.c
@@ -36,6 +36,7 @@
#include "debug_counter.h"
#include "eval_intern.h"
#include "internal.h"
+#include "internal/error.h"
#include "internal/eval.h"
#include "internal/sanitizers.h"
#include "internal/signal.h"