diff --git a/gc/default.c b/gc/default.c index 5b7e427e3e..1ecffe9b1d 100644 --- a/gc/default.c +++ b/gc/default.c @@ -8035,7 +8035,7 @@ gc_config_set_key(st_data_t key, st_data_t value, st_data_t data) rb_objspace_t *objspace = (rb_objspace_t *)data; if (rb_sym2id(key) == rb_intern("rgengc_allow_full_mark")) { gc_rest(objspace); - gc_config_full_mark_set(RBOOL(value)); + gc_config_full_mark_set(RTEST(value)); } return ST_CONTINUE; } diff --git a/test/ruby/test_gc.rb b/test/ruby/test_gc.rb index f47f1e282a..a05da28f7e 100644 --- a/test/ruby/test_gc.rb +++ b/test/ruby/test_gc.rb @@ -74,8 +74,10 @@ class TestGc < Test::Unit::TestCase new_value = GC.config(rgengc_allow_full_mark: false)[:rgengc_allow_full_mark] assert_false(new_value) + new_value = GC.config(rgengc_allow_full_mark: nil)[:rgengc_allow_full_mark] + assert_false(new_value) ensure - GC.config(rgengc_allow_full_mark: true) + GC.config(rgengc_allow_full_mark: old_value) GC.start end