[Bug #19584] Register global variables before assignment

This commit is contained in:
Nobuyoshi Nakada 2023-04-07 11:43:57 +09:00
parent 5f8ebcada0
commit e13575bb79
No known key found for this signature in database
GPG Key ID: 7CD2805BFA3770C6
2 changed files with 6 additions and 7 deletions

7
io.c
View File

@ -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;

View File

@ -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(&registered_tagged_value);
rb_gc_register_address(&registered_reference_value);
rb_gc_register_address(&registered_before_rb_gc_register_address);
rb_global_variable(&registered_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()");