[macruby-changes] [5295] MacRuby/trunk/hash.c

source_changes at macosforge.org source_changes at macosforge.org
Wed Mar 23 09:01:25 PDT 2011


Revision: 5295
          http://trac.macosforge.org/projects/ruby/changeset/5295
Author:   watson1978 at gmail.com
Date:     2011-03-23 09:01:25 -0700 (Wed, 23 Mar 2011)
Log Message:
-----------
Hash#[]= will not duplicate already frozen string key.

Test Script:
{{{
require 'test/unit/assertions.rb'
include Test::Unit::Assertions

key = "foo".freeze
h = {}
h[key] = 42

assert_equal( h.keys[0].object_id, key.object_id )

puts :ok
}}}

Modified Paths:
--------------
    MacRuby/trunk/hash.c

Modified: MacRuby/trunk/hash.c
===================================================================
--- MacRuby/trunk/hash.c	2011-03-23 16:01:21 UTC (rev 5294)
+++ MacRuby/trunk/hash.c	2011-03-23 16:01:25 UTC (rev 5295)
@@ -964,7 +964,7 @@
 rhash_aset(VALUE hash, SEL sel, VALUE key, VALUE val)
 {
     rhash_modify(hash);
-    if (TYPE(key) == T_STRING) {
+    if (TYPE(key) == T_STRING && !OBJ_FROZEN(key)) {
         key = rb_str_dup(key);
         OBJ_FREEZE(key);
     }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20110323/d8d2346d/attachment.html>


More information about the macruby-changes mailing list