summaryrefslogtreecommitdiff
path: root/process.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-10-19 16:41:09 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-10-19 16:41:09 +0900
commit1d9e12925594be3d06230dc05e8b015f2928b491 (patch)
tree54e33ce07b7d1e23ae1bbc006681fd591e7316a4 /process.c
parent012cafa5c7274ef50e6306cf5c3e09c2fb64f44d (diff)
Fill pid and error in the status
Diffstat (limited to 'process.c')
-rw-r--r--process.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/process.c b/process.c
index c7cda7e7f9..5e37a29460 100644
--- a/process.c
+++ b/process.c
@@ -4296,8 +4296,9 @@ rb_fork_async_signal_safe(int *status,
return result;
}
-rb_pid_t
-rb_fork_ruby2(struct rb_process_status *status) {
+static rb_pid_t
+rb_fork_ruby2(struct rb_process_status *status)
+{
rb_pid_t pid;
int try_gc = 1, err;
struct child_handler_disabler_state old;
@@ -4311,6 +4312,10 @@ rb_fork_ruby2(struct rb_process_status *status) {
before_fork_ruby();
pid = rb_fork();
err = errno;
+ if (status) {
+ status->pid = pid;
+ status->error = err;
+ }
after_fork_ruby();
disable_child_handler_fork_parent(&old); /* yes, bad name */