diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-08-18 12:35:28 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-08-18 12:35:28 +0000 |
commit | b5b5b28c650fc51cba7c06b48501de84c0ef9523 (patch) | |
tree | 663cb1775809cf3deaec6b6278680d8ed0a11e82 /process.c | |
parent | 3e1a6feeb636a37bc671461eb341dff97eb4b82b (diff) |
Temporary revert "process.c: dead code when no SIGCHLD"
This reverts commit r64407.
Maybe it breaks http://mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-trunk/log/20180817T095734Z.fail.html.gz
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'process.c')
-rw-r--r-- | process.c | 18 |
1 files changed, 6 insertions, 12 deletions
@@ -981,7 +981,6 @@ rb_sigwait_fd_migrate(rb_vm_t *vm) rb_native_mutex_unlock(&vm->waitpid_lock); } -#if RUBY_SIGCHLD static void waitpid_notify(struct waitpid_state *w, rb_pid_t ret) { @@ -995,7 +994,13 @@ waitpid_notify(struct waitpid_state *w, rb_pid_t ret) } } +#ifdef _WIN32 /* for spawnvp result from mjit.c */ +# define waitpid_sys(pid,status,options) \ + (WaitForSingleObject((HANDLE)(pid), 0),\ + GetExitCodeProcess((HANDLE)(pid), (LPDWORD)(status))) +#else # define waitpid_sys(pid,status,options) do_waitpid((pid),(status),(options)) +#endif extern volatile unsigned int ruby_nocldwait; /* signal.c */ /* called by timer thread or thread which acquired sigwait_fd */ @@ -1027,14 +1032,10 @@ waitpid_each(struct list_head *head) } } } -#else -# define ruby_nocldwait 0 -#endif void ruby_waitpid_all(rb_vm_t *vm) { -#if RUBY_SIGCHLD rb_native_mutex_lock(&vm->waitpid_lock); waitpid_each(&vm->waiting_pids); if (list_empty(&vm->waiting_pids)) { @@ -1046,7 +1047,6 @@ ruby_waitpid_all(rb_vm_t *vm) ; /* keep looping */ } rb_native_mutex_unlock(&vm->waitpid_lock); -#endif } static void @@ -4458,27 +4458,21 @@ rb_f_system(int argc, VALUE *argv) execarg_obj = rb_execarg_new(argc, argv, TRUE, TRUE); TypedData_Get_Struct(execarg_obj, struct rb_execarg, &exec_arg_data_type, eargp); -#if RUBY_SIGCHLD eargp->nocldwait_prev = ruby_nocldwait; ruby_nocldwait = 0; -#endif pid = rb_execarg_spawn(execarg_obj, NULL, 0); #if defined(HAVE_WORKING_FORK) || defined(HAVE_SPAWNV) if (pid > 0) { int ret, status; ret = rb_waitpid(pid, &status, 0); if (ret == (rb_pid_t)-1) { -# if RUBY_SIGCHLD ruby_nocldwait = eargp->nocldwait_prev; -# endif RB_GC_GUARD(execarg_obj); rb_sys_fail("Another thread waited the process started by system()."); } } #endif -#if RUBY_SIGCHLD ruby_nocldwait = eargp->nocldwait_prev; -#endif if (pid < 0) { if (eargp->exception) { int err = errno; |