https://github.com/eventmachine/eventmachine/pull/988 https://github.com/eventmachine/eventmachine/commit/3980847f4463bcaf80c06f53e95b7eb1dddd2404 From 3980847f4463bcaf80c06f53e95b7eb1dddd2404 Mon Sep 17 00:00:00 2001 From: Antonio Terceiro Date: Thu, 5 Sep 2024 12:10:49 -0300 Subject: [PATCH] Fix usage of Process::Status on ruby3.3 (#988) --- a/ext/extconf.rb +++ b/ext/extconf.rb @@ -140,6 +140,7 @@ def find_openssl_library # Add for changes to Process::Status in Ruby 3 add_define("IS_RUBY_3_OR_LATER") if RUBY_VERSION > "3.0" +add_define("IS_RUBY_3_3_OR_LATER") if RUBY_VERSION > "3.3" # Adjust number of file descriptors (FD) on Windows --- a/ext/rubymain.cpp +++ b/ext/rubymain.cpp @@ -563,7 +563,13 @@ static VALUE t_get_subprocess_status (VALUE self UNUSED, VALUE signature) if (evma_get_subprocess_status (NUM2BSIG (signature), &status)) { if (evma_get_subprocess_pid (NUM2BSIG (signature), &pid)) { -#ifdef IS_RUBY_3_OR_LATER +#if defined(IS_RUBY_3_3_OR_LATER) + proc_status = rb_obj_alloc(rb_cProcessStatus); + struct rb_process_status *data = NULL; + data = (rb_process_status*)RTYPEDDATA_GET_DATA(proc_status); + data->pid = pid; + data->status = status; +#elif defined(IS_RUBY_3_OR_LATER) struct rb_process_status *data = NULL; /* Defined to match static definition from MRI Ruby 3.0 process.c