From a92374677c683e78ba24013c6c7d60bf133e0c26 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 30 Mar 2014 21:55:59 +0000 Subject: 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 --- gc.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'gc.c') diff --git a/gc.c b/gc.c index 3b9721e9d3..fb7008bacd 100644 --- a/gc.c +++ b/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); #undef SET - if (key != Qnil) /* matched key should return above */ - rb_raise(rb_eArgError, "unknown key: %s", RSTRING_PTR(rb_id2str(SYM2ID(key)))); + if (!NIL_P(key)) {/* matched key should return above */ + rb_raise(rb_eArgError, "unknown key: %"PRIsVALUE, rb_sym2str(key)); + } return hash; } @@ -5486,8 +5487,9 @@ gc_stat_internal(VALUE hash_or_sym, size_t *out) #endif /* USE_RGENGC */ #undef SET - if (key != Qnil) /* matched key should return above */ - rb_raise(rb_eArgError, "unknown key: %s", RSTRING_PTR(rb_id2str(SYM2ID(key)))); + if (!NIL_P(key)) { /* matched key should return above */ + rb_raise(rb_eArgError, "unknown key: %"PRIsVALUE, rb_sym2str(key)); + } #if defined(RGENGC_PROFILE) && RGENGC_PROFILE >= 2 if (hash != Qnil) { -- cgit v1.2.3