ruby-changes:11986
From: matz <ko1@a...>
Date: Mon, 8 Jun 2009 14:44:33 +0900 (JST)
Subject: [ruby-changes:11986] Ruby:r23650 (trunk): * hash.c (rb_hash_reject_bang): always check frozen status.
matz 2009-06-08 14:44:17 +0900 (Mon, 08 Jun 2009) New Revision: 23650 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=23650 Log: * hash.c (rb_hash_reject_bang): always check frozen status. [ruby-core:23715] * hash.c (rb_hash_update): ditto. * hash.c (rb_hash_reject_bang): call rb_hash_foreach() directly. * hash.c (rb_hash_update_i): call st_insert() directly. * hash.c (rb_hash_update_block_i): ditto. Modified files: trunk/ChangeLog trunk/hash.c Index: ChangeLog =================================================================== --- ChangeLog (revision 23649) +++ ChangeLog (revision 23650) @@ -9,6 +9,19 @@ * lib/cmath.rb (log): avoided redundant expression. +Sat Jun 6 02:49:05 2009 Yukihiro Matsumoto <matz@r...> + + * hash.c (rb_hash_reject_bang): always check frozen status. + [ruby-core:23715] + + * hash.c (rb_hash_update): ditto. + + * hash.c (rb_hash_reject_bang): call rb_hash_foreach() directly. + + * hash.c (rb_hash_update_i): call st_insert() directly. + + * hash.c (rb_hash_update_block_i): ditto. + Fri Jun 5 07:12:32 2009 Yukihiro Matsumoto <matz@r...> * lib/mkmf.rb (#link_command): should dup CONFTEST_C which is Index: hash.c =================================================================== --- hash.c (revision 23649) +++ hash.c (revision 23650) @@ -882,10 +882,11 @@ st_index_t n; RETURN_ENUMERATOR(hash, 0, 0); + rb_hash_modify(hash); if (!RHASH(hash)->ntbl) return Qnil; n = RHASH(hash)->ntbl->num_entries; - rb_hash_delete_if(hash); + rb_hash_foreach(hash, delete_if_i, hash); if (n == RHASH(hash)->ntbl->num_entries) return Qnil; return hash; } @@ -1601,7 +1602,7 @@ rb_hash_update_i(VALUE key, VALUE value, VALUE hash) { if (key == Qundef) return ST_CONTINUE; - rb_hash_aset(hash, key, value); + st_insert(RHASH(hash)->ntbl, key, value); return ST_CONTINUE; } @@ -1612,7 +1613,7 @@ if (rb_hash_has_key(hash, key)) { value = rb_yield_values(3, key, rb_hash_aref(hash, key), value); } - rb_hash_aset(hash, key, value); + st_insert(RHASH(hash)->ntbl, key, value); return ST_CONTINUE; } @@ -1642,6 +1643,7 @@ static VALUE rb_hash_update(VALUE hash1, VALUE hash2) { + rb_hash_modify(hash1); hash2 = to_hash(hash2); if (rb_block_given_p()) { rb_hash_foreach(hash2, rb_hash_update_block_i, hash1); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/