aboutsummaryrefslogtreecommitdiffstats
path: root/process.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-12-04 01:41:55 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-12-04 01:41:55 +0000
commitb0ec083a20c7b717492994f1ad7a03a97540f218 (patch)
tree04ddbc5d16950d864a579c8a8a7cac81ba5e7382 /process.c
parent5e8e1fcf87601d2f91a5d58b2a92c7b6089adddf (diff)
downloadruby-b0ec083a20c7b717492994f1ad7a03a97540f218.tar.gz
process.c (retry_fork_async_signal_safe): fix -Wclobbered
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66178 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'process.c')
-rw-r--r--process.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/process.c b/process.c
index cbdb821819..d395b19c29 100644
--- a/process.c
+++ b/process.c
@@ -3925,11 +3925,11 @@ retry_fork_async_signal_safe(int *status, int *ep,
volatile int try_gc = 1;
struct child_handler_disabler_state old;
int err;
- rb_nativethread_lock_t *waitpid_lock;
-
- waitpid_lock = w && WAITPID_USE_SIGCHLD ? &GET_VM()->waitpid_lock : 0;
+ rb_nativethread_lock_t *const waitpid_lock_init =
+ (w && WAITPID_USE_SIGCHLD) ? &GET_VM()->waitpid_lock : 0;
while (1) {
+ rb_nativethread_lock_t *waitpid_lock = waitpid_lock_init;
prefork();
disable_child_handler_before_fork(&old);
if (waitpid_lock) {
@@ -3959,6 +3959,7 @@ retry_fork_async_signal_safe(int *status, int *ep,
#endif
}
err = errno;
+ waitpid_lock = waitpid_lock_init;
if (waitpid_lock) {
if (pid > 0 && w != WAITPID_LOCK_ONLY) {
w->pid = pid;