diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-10-26 05:32:47 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-10-26 05:32:47 +0000 |
commit | 1e83e15ab55c427fe89c7497d7d813b5a884401f (patch) | |
tree | 4223d582bbddf1a11b8f733fd3de53b4d7508d83 /hash.c | |
parent | 7cc758f7a84f8207e8e589d3cb8a8cbc813cfd88 (diff) |
hash.c: aset deduplicates un-tainted string
We revisit [Bug #9188] since st.c is much improved since then,
and benchmarks against so_k_nucleotide seem to indicate little
or no performance change compared to before.
[ruby-core:89555] [Feature #15251]
From: Anmol Chopra <chopraanmol1@gmail.com>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65371 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
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); } |