[macruby-changes] [810] MacRuby/trunk

source_changes at macosforge.org source_changes at macosforge.org
Thu Feb 12 11:00:03 PST 2009


Revision: 810
          http://trac.macosforge.org/projects/ruby/changeset/810
Author:   eloy.de.enige at gmail.com
Date:     2009-02-12 11:00:03 -0800 (Thu, 12 Feb 2009)
Log Message:
-----------
Copy a Hash?\226?\128?\153s default proc when duplicating an instance. Hat-tip to Scott Ford.

Modified Paths:
--------------
    MacRuby/trunk/hash.c
    MacRuby/trunk/test-macruby/cases/hash_test.rb

Modified: MacRuby/trunk/hash.c
===================================================================
--- MacRuby/trunk/hash.c	2009-01-22 16:31:05 UTC (rev 809)
+++ MacRuby/trunk/hash.c	2009-02-12 19:00:03 UTC (rev 810)
@@ -167,6 +167,11 @@
     if (OBJ_TAINTED(rcv))
 	OBJ_TAINT(dup);
     CFMakeCollectable((CFTypeRef)dup);
+
+	struct rb_objc_hash_struct *s = rb_objc_hash_get_struct(rcv);
+	if (s != NULL)
+	    rb_objc_hash_set_struct(dup, s->ifnone, s->has_proc_default);
+
     return dup;
 }
 

Modified: MacRuby/trunk/test-macruby/cases/hash_test.rb
===================================================================
--- MacRuby/trunk/test-macruby/cases/hash_test.rb	2009-01-22 16:31:05 UTC (rev 809)
+++ MacRuby/trunk/test-macruby/cases/hash_test.rb	2009-02-12 19:00:03 UTC (rev 810)
@@ -3,7 +3,6 @@
 require File.expand_path('../../test_helper', __FILE__)
 
 class TestHash < Test::Unit::TestCase
-
   def test_hash_class
     assert(Hash.is_a?(Class))
     assert(Hash.ancestors.include?(NSDictionary))
@@ -88,4 +87,8 @@
     assert_equal(nil, h[1])
   end
 
+  it "should return a duplicate _with_ default proc" do
+    hash = Hash.new { |_,k| k }.dup
+    assert_equal :default, hash[:default]
+  end
 end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090212/0ef6a5ea/attachment.html>


More information about the macruby-changes mailing list