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

ruby-changes:31608

From: tarui <ko1@a...>
Date: Sat, 16 Nov 2013 02:09:05 +0900 (JST)
Subject: [ruby-changes:31608] tarui:r43687 (trunk): revert r43675 and r43683 without tests for applying rollback patch.

tarui	2013-11-16 02:08:52 +0900 (Sat, 16 Nov 2013)

  New Revision: 43687

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=43687

  Log:
    revert r43675 and r43683 without tests for applying rollback patch.

  Modified files:
    trunk/ChangeLog
    trunk/hash.c
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 43686)
+++ ChangeLog	(revision 43687)
@@ -5,13 +5,6 @@ Sat Nov 16 00:18:36 2013  Masaki Matsush https://github.com/ruby/ruby/blob/trunk/ChangeLog#L5
 
 	* test/ruby/test_beginendblock.rb: test for above.
 
-Fri Nov 15 22:21:34 2013  Nobuyoshi Nakada  <nobu@r...>
-
-	* hash.c (hash_foreach_iter, hash_foreach_ensure, rb_hash_foreach):
-	  deal with iteration level when reentering by callcc.  temporary
-	  measure until rollback of ensure is introduced.  [ruby-dev:47807]
-	  [Bug #9105]
-
 Fri Nov 15 17:07:31 2013  Nobuyoshi Nakada  <nobu@r...>
 
 	* lib/delegate.rb (Delegator#send): override to get rid of global function interference.
@@ -45,10 +38,7 @@ Thu Nov 14 19:53:00 2013  Tanaka Akira https://github.com/ruby/ruby/blob/trunk/ChangeLog#L38
 	  EVP_CIPHER_CTX_ctrl (and internally aes_gcm_ctrl) fail.
 	  [ruby-core:55143] [Bug #8439] reported by Vit Ondruch.
 
-Thu Nov 14 11:35:37 2013  Nobuyoshi Nakada  <nobu@r...>
-
-	* hash.c (hash_foreach_ensure): restore iter_lev to the previous
-	  value, not just decrement.  [ruby-dev:47803] [Bug #9105]
+Thu Nov 14 11:33:47 2013  Nobuyoshi Nakada  <nobu@r...>
 
 	* hash.c (foreach_safe_i, hash_foreach_iter): deal with error detected
 	  by ST_CHECK.
Index: hash.c
===================================================================
--- hash.c	(revision 43686)
+++ hash.c	(revision 43687)
@@ -173,7 +173,6 @@ struct hash_foreach_arg { https://github.com/ruby/ruby/blob/trunk/hash.c#L173
     VALUE hash;
     rb_foreach_func *func;
     VALUE arg;
-    VALUE marker;
 };
 
 static int
@@ -189,10 +188,6 @@ hash_foreach_iter(st_data_t key, st_data https://github.com/ruby/ruby/blob/trunk/hash.c#L188
     if (RHASH(arg->hash)->ntbl != tbl) {
 	rb_raise(rb_eRuntimeError, "rehash occurred during iteration");
     }
-    if (DATA_PTR(arg->marker)) {
-	RHASH_ITER_LEV(arg->hash)++;
-	DATA_PTR(arg->marker) = 0;
-    }
     switch (status) {
       case ST_DELETE:
 	FL_SET(arg->hash, HASH_DELETED);
@@ -206,14 +201,8 @@ hash_foreach_iter(st_data_t key, st_data https://github.com/ruby/ruby/blob/trunk/hash.c#L201
 }
 
 static VALUE
-hash_foreach_ensure(VALUE arg)
+hash_foreach_ensure(VALUE hash)
 {
-    struct hash_foreach_arg *argp = (struct hash_foreach_arg *)arg;
-    VALUE hash = argp->hash;
-
-    if (DATA_PTR(argp->marker)) return 0;
-    DATA_PTR(argp->marker) = (void *)-1;
-
     if (--RHASH_ITER_LEV(hash) == 0) {
 	if (FL_TEST(hash, HASH_DELETED)) {
 	    st_cleanup_safe(RHASH(hash)->ntbl, (st_data_t)Qundef);
@@ -240,12 +229,11 @@ rb_hash_foreach(VALUE hash, int (*func)( https://github.com/ruby/ruby/blob/trunk/hash.c#L229
 
     if (!RHASH(hash)->ntbl)
         return;
+    RHASH_ITER_LEV(hash)++;
     arg.hash = hash;
     arg.func = (rb_foreach_func *)func;
     arg.arg  = farg;
-    arg.marker = Data_Wrap_Struct(0, 0, 0, 0);
-    RHASH_ITER_LEV(hash)++;
-    rb_ensure(hash_foreach_call, (VALUE)&arg, hash_foreach_ensure, (VALUE)&arg);
+    rb_ensure(hash_foreach_call, (VALUE)&arg, hash_foreach_ensure, hash);
 }
 
 static VALUE

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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