mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
gc.c: avoid inadvertent pin-down
* gc.c (gc_info_decode): get rid of inadvertent dynamic symbol pin-down, and preserve encoding in error messages. also should not use RSTRING_PTR macro on function calls. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45480 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
1cd98eb928
commit
a92374677c
2 changed files with 11 additions and 4 deletions
10
gc.c
10
gc.c
|
@ -5325,8 +5325,9 @@ gc_info_decode(int flags, VALUE hash_or_key)
|
||||||
SET(immediate_sweep, (flags & GPR_FLAG_IMMEDIATE_SWEEP) ? Qtrue : Qfalse);
|
SET(immediate_sweep, (flags & GPR_FLAG_IMMEDIATE_SWEEP) ? Qtrue : Qfalse);
|
||||||
#undef SET
|
#undef SET
|
||||||
|
|
||||||
if (key != Qnil) /* matched key should return above */
|
if (!NIL_P(key)) {/* matched key should return above */
|
||||||
rb_raise(rb_eArgError, "unknown key: %s", RSTRING_PTR(rb_id2str(SYM2ID(key))));
|
rb_raise(rb_eArgError, "unknown key: %"PRIsVALUE, rb_sym2str(key));
|
||||||
|
}
|
||||||
|
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
@ -5486,8 +5487,9 @@ gc_stat_internal(VALUE hash_or_sym, size_t *out)
|
||||||
#endif /* USE_RGENGC */
|
#endif /* USE_RGENGC */
|
||||||
#undef SET
|
#undef SET
|
||||||
|
|
||||||
if (key != Qnil) /* matched key should return above */
|
if (!NIL_P(key)) { /* matched key should return above */
|
||||||
rb_raise(rb_eArgError, "unknown key: %s", RSTRING_PTR(rb_id2str(SYM2ID(key))));
|
rb_raise(rb_eArgError, "unknown key: %"PRIsVALUE, rb_sym2str(key));
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(RGENGC_PROFILE) && RGENGC_PROFILE >= 2
|
#if defined(RGENGC_PROFILE) && RGENGC_PROFILE >= 2
|
||||||
if (hash != Qnil) {
|
if (hash != Qnil) {
|
||||||
|
|
|
@ -95,6 +95,10 @@ class TestGc < Test::Unit::TestCase
|
||||||
assert_equal(count[:FREE], stat[:heap_free_slot])
|
assert_equal(count[:FREE], stat[:heap_free_slot])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_stat_argument
|
||||||
|
assert_raise_with_message(ArgumentError, /\u{30eb 30d3 30fc}/) {GC.stat(:"\u{30eb 30d3 30fc}")}
|
||||||
|
end
|
||||||
|
|
||||||
def test_stat_single
|
def test_stat_single
|
||||||
stat = GC.stat
|
stat = GC.stat
|
||||||
assert_equal stat[:count], GC.stat(:count)
|
assert_equal stat[:count], GC.stat(:count)
|
||||||
|
@ -124,6 +128,7 @@ class TestGc < Test::Unit::TestCase
|
||||||
assert_not_empty info
|
assert_not_empty info
|
||||||
assert_equal info[:gc_by], GC.latest_gc_info(:gc_by)
|
assert_equal info[:gc_by], GC.latest_gc_info(:gc_by)
|
||||||
assert_raises(ArgumentError){ GC.latest_gc_info(:invalid) }
|
assert_raises(ArgumentError){ GC.latest_gc_info(:invalid) }
|
||||||
|
assert_raise_with_message(ArgumentError, /\u{30eb 30d3 30fc}/) {GC.latest_gc_info(:"\u{30eb 30d3 30fc}")}
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_singleton_method
|
def test_singleton_method
|
||||||
|
|
Loading…
Add table
Reference in a new issue