[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