[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]