[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