diff options
Diffstat (limited to 'hash.c')
-rw-r--r-- | hash.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -1587,11 +1587,15 @@ VALUE rb_hash_key_str(VALUE key) { VALUE k; + int not_tainted = !RB_OBJ_TAINTED(key); - if (!RB_OBJ_TAINTED(key) && + if (not_tainted && (k = fstring_existing_str(key)) != Qnil) { return k; } + else if(not_tainted) { + return rb_fstring(key); + } else { return rb_str_new_frozen(key); } |