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

source_changes at macosforge.org source_changes at macosforge.org
Thu Mar 24 21:24:45 PDT 2011


Revision: 5306
          http://trac.macosforge.org/projects/ruby/changeset/5306
Author:   watson1978 at gmail.com
Date:     2011-03-24 21:24:44 -0700 (Thu, 24 Mar 2011)
Log Message:
-----------
Hash#{clone, dup} will copy status of untrust.

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

a = { 1 => 'one', 2 => 'two', 3 => 'three' }
a.untrust
a.taint
a.freeze

b = a.clone
assert_equal(a.untrusted?, b.untrusted?)
assert_equal(a.tainted?, b.tainted?)
assert_equal(a.frozen?, b.frozen?)

c = a.dup
assert_equal(a.untrusted?, c.untrusted?)
assert_equal(a.tainted?, c.tainted?)
assert_equal(false, c.frozen?)

puts :ok
}}}

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

Modified: MacRuby/trunk/hash.c
===================================================================
--- MacRuby/trunk/hash.c	2011-03-24 21:32:23 UTC (rev 5305)
+++ MacRuby/trunk/hash.c	2011-03-25 04:24:44 UTC (rev 5306)
@@ -168,9 +168,7 @@
 
     VALUE dup = rhash_copy(rcv, klass);
 
-    if (OBJ_TAINTED(rcv)) {
-	OBJ_TAINT(dup);
-    }
+    OBJ_INFECT(dup, rcv);
     return dup;
 }
 
@@ -179,9 +177,7 @@
 {
     VALUE clone = rhash_copy(rcv, CLASS_OF(rcv));
 
-    if (OBJ_TAINTED(rcv)) {
-	OBJ_TAINT(clone);
-    }
+    OBJ_INFECT(clone, rcv);
     if (OBJ_FROZEN(rcv)) {
 	OBJ_FREEZE(clone);
     }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20110324/53905df6/attachment.html>


More information about the macruby-changes mailing list