Simplify conditions [Feature #15251]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
1e83e15ab5
commit
81c849172d
24
hash.c
24
hash.c
@ -1565,36 +1565,24 @@ hash_aset(st_data_t *key, st_data_t *val, struct update_arg *arg, int existing)
|
||||
}
|
||||
|
||||
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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user