From e13575bb7938e9e5b6a79bfca1b3793123f479da Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Fri, 7 Apr 2023 11:43:57 +0900 Subject: [PATCH] [Bug #19584] Register global variables before assignment --- io.c | 7 +++---- spec/ruby/optional/capi/ext/gc_spec.c | 6 +++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/io.c b/io.c index 1b7cdc86f5..d0af749231 100644 --- a/io.c +++ b/io.c @@ -15533,13 +15533,12 @@ Init_IO(void) rb_gvar_ractor_local("$>"); rb_gvar_ractor_local("$stderr"); - rb_stdin = rb_io_prep_stdin(); - rb_stdout = rb_io_prep_stdout(); - rb_stderr = rb_io_prep_stderr(); - rb_global_variable(&rb_stdin); + rb_stdin = rb_io_prep_stdin(); rb_global_variable(&rb_stdout); + rb_stdout = rb_io_prep_stdout(); rb_global_variable(&rb_stderr); + rb_stderr = rb_io_prep_stderr(); orig_stdout = rb_stdout; orig_stderr = rb_stderr; diff --git a/spec/ruby/optional/capi/ext/gc_spec.c b/spec/ruby/optional/capi/ext/gc_spec.c index 082e4af59c..b323c2456d 100644 --- a/spec/ruby/optional/capi/ext/gc_spec.c +++ b/spec/ruby/optional/capi/ext/gc_spec.c @@ -28,8 +28,8 @@ static VALUE get_registered_before_rb_global_variable(VALUE self) { } static VALUE gc_spec_rb_gc_register_address(VALUE self) { - rb_gc_register_address_outside_init = rb_str_new_cstr("rb_gc_register_address() outside Init_"); rb_gc_register_address(&rb_gc_register_address_outside_init); + rb_gc_register_address_outside_init = rb_str_new_cstr("rb_gc_register_address() outside Init_"); return rb_gc_register_address_outside_init; } @@ -67,14 +67,14 @@ static VALUE gc_spec_rb_gc_register_mark_object(VALUE self, VALUE obj) { void Init_gc_spec(void) { VALUE cls = rb_define_class("CApiGCSpecs", rb_cObject); - registered_tagged_value = INT2NUM(10); - registered_reference_value = rb_str_new2("Globally registered data"); rb_gc_register_address(®istered_tagged_value); rb_gc_register_address(®istered_reference_value); rb_gc_register_address(®istered_before_rb_gc_register_address); rb_global_variable(®istered_before_rb_global_variable); + registered_tagged_value = INT2NUM(10); + registered_reference_value = rb_str_new2("Globally registered data"); registered_before_rb_gc_register_address = rb_str_new_cstr("registered before rb_gc_register_address()"); registered_before_rb_global_variable = rb_str_new_cstr("registered before rb_global_variable()");