ruby-changes:24330
From: nobu <ko1@a...>
Date: Sat, 14 Jul 2012 16:05:34 +0900 (JST)
Subject: [ruby-changes:24330] nobu:r36381 (trunk): array.c: no infection by unused separator
nobu 2012-07-14 16:04:28 +0900 (Sat, 14 Jul 2012) New Revision: 36381 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=36381 Log: array.c: no infection by unused separator * array.c (rb_ary_join): should not infected by separator if it is not used. [ruby-core:42161][Bug #5902] Modified files: trunk/ChangeLog trunk/array.c trunk/test/ruby/test_array.rb Index: array.c =================================================================== --- array.c (revision 36380) +++ array.c (revision 36381) @@ -1768,8 +1768,8 @@ VALUE val, tmp, result; if (RARRAY_LEN(ary) == 0) return rb_usascii_str_new(0, 0); - if (OBJ_TAINTED(ary) || OBJ_TAINTED(sep)) taint = TRUE; - if (OBJ_UNTRUSTED(ary) || OBJ_UNTRUSTED(sep)) untrust = TRUE; + if (OBJ_TAINTED(ary)) taint = TRUE; + if (OBJ_UNTRUSTED(ary)) untrust = TRUE; if (!NIL_P(sep)) { StringValue(sep); Index: ChangeLog =================================================================== --- ChangeLog (revision 36380) +++ ChangeLog (revision 36381) @@ -1,3 +1,8 @@ +Sat Jul 14 16:04:24 2012 Nobuyoshi Nakada <nobu@r...> + + * array.c (rb_ary_join): should not infected by separator if it is not + used. [ruby-core:42161][Bug #5902] + Sat Jul 14 02:31:55 2012 Nobuyoshi Nakada <nobu@r...> * include/ruby/intern.h (rb_thread_blocking_region): fix declarations Index: test/ruby/test_array.rb =================================================================== --- test/ruby/test_array.rb (revision 36380) +++ test/ruby/test_array.rb (revision 36381) @@ -920,6 +920,19 @@ assert_equal(true, s.tainted?) assert_equal(true, s.untrusted?) + bug5902 = '[ruby-core:42161]' + sep = ":".taint.untrust + + s = @cls[].join(sep) + assert_equal(false, s.tainted?, bug5902) + assert_equal(false, s.untrusted?, bug5902) + s = @cls[1].join(sep) + assert_equal(false, s.tainted?, bug5902) + assert_equal(false, s.untrusted?, bug5902) + s = @cls[1, 2].join(sep) + assert_equal(true, s.tainted?, bug5902) + assert_equal(true, s.untrusted?, bug5902) + e = ''.force_encoding('EUC-JP') u = ''.force_encoding('UTF-8') assert_equal(Encoding::US_ASCII, [[]].join.encoding) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/