ruby-changes:53158
From: nobu <ko1@a...>
Date: Fri, 26 Oct 2018 15:18:34 +0900 (JST)
Subject: [ruby-changes:53158] nobu:r65372 (trunk): Simplify conditions [Feature #15251]
nobu 2018-10-26 15:18:28 +0900 (Fri, 26 Oct 2018) New Revision: 65372 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=65372 Log: Simplify conditions [Feature #15251] Modified files: trunk/hash.c Index: hash.c =================================================================== --- hash.c (revision 65371) +++ hash.c (revision 65372) @@ -1565,36 +1565,24 @@ hash_aset(st_data_t *key, st_data_t *val https://github.com/ruby/ruby/blob/trunk/hash.c#L1565 } static VALUE -fstring_existing_str(VALUE str) +fstring_key_str(VALUE str) { st_data_t fstr; st_table *tbl = rb_vm_fstring_table(); - if (st_lookup(tbl, str, &fstr)) { - if (rb_objspace_garbage_object_p(fstr)) { - return rb_fstring(str); - } - else { - return (VALUE)fstr; - } + if (st_lookup(tbl, str, &fstr) && !rb_objspace_garbage_object_p(fstr)) { + return (VALUE)fstr; } else { - return Qnil; + return rb_fstring(str); } } VALUE rb_hash_key_str(VALUE key) { - VALUE k; - int not_tainted = !RB_OBJ_TAINTED(key); - - if (not_tainted && - (k = fstring_existing_str(key)) != Qnil) { - return k; - } - else if(not_tainted) { - return rb_fstring(key); + if (!FL_ANY_RAW(key, FL_TAINT|FL_SINGLETON)) { + return fstring_key_str(key); } else { return rb_str_new_frozen(key); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/