From 300ac6c573da40d6320575a2c2693ba7dfe5c42b Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 26 Oct 2018 06:41:34 +0000 Subject: [PATCH] Fix a condition and just call rb_fstring [Feature #15251] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65374 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- hash.c | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/hash.c b/hash.c index 199ad28408..7a8f3f0faf 100644 --- a/hash.c +++ b/hash.c @@ -1564,25 +1564,11 @@ hash_aset(st_data_t *key, st_data_t *val, struct update_arg *arg, int existing) return ST_CONTINUE; } -static VALUE -fstring_key_str(VALUE str) -{ - st_data_t fstr; - st_table *tbl = rb_vm_fstring_table(); - - if (st_lookup(tbl, str, &fstr) && !rb_objspace_garbage_object_p(fstr)) { - return (VALUE)fstr; - } - else { - return rb_fstring(str); - } -} - VALUE rb_hash_key_str(VALUE key) { - if (!FL_ANY_RAW(key, FL_TAINT|FL_SINGLETON)) { - return fstring_key_str(key); + if (!RB_FL_ANY_RAW(key, FL_TAINT|FL_EXIVAR) && RBASIC_CLASS(key) == rb_cString) { + return rb_fstring(key); } else { return rb_str_new_frozen(key);