[#81999] [Ruby trunk Bug#13737] "can't modify frozen String" when installing bundled gems — ko1@...
Issue #13737 has been updated by ko1 (Koichi Sasada).
4 messages
2017/07/11
[#82005] [Ruby trunk Bug#13737] "can't modify frozen String" when installing bundled gems — nobu@...
Issue #13737 has been updated by nobu (Nobuyoshi Nakada).
3 messages
2017/07/12
[#82102] Re: register_fstring_tainted:FL_TEST_RAW(str, RSTRING_FSTR) — Eric Wong <normalperson@...>
Koichi Sasada <ko1@atdot.net> wrote:
4 messages
2017/07/18
[#82151] [Ruby trunk Feature#13637] [PATCH] tool/runruby.rb: test with smallest possible machine stack — Rei.Odaira@...
Issue #13637 has been updated by ReiOdaira (Rei Odaira).
3 messages
2017/07/24
[ruby-core:82103] Re: register_fstring_tainted:FL_TEST_RAW(str, RSTRING_FSTR)
From:
Eric Wong <normalperson@...>
Date:
2017-07-18 23:33:36 UTC
List:
ruby-core #82103
Eric Wong <normalperson@yhbt.net> wrote:
> Koichi Sasada <ko1@atdot.net> wrote:
> > so many errors..
> > http://ci.rvm.jp/
> > http://rubyci.org/
> >
> > On 2017/07/18 20:43, Koichi Sasada wrote:
> > >I got it.
> > >
> > >https://gist.github.com/anonymous/b22263dd722b5c057c0f8052790f3cb3#file-brlog-trunk-20170718-202820-L379
> > >
> > >
> > >I, [2017-07-18T20:29:09.062035 #16825] INFO -- : Assertion Failed: /home/ko1/ruby/src/trunk/string.c:346:register_fstring_tainted:FL_TEST_RAW(str,
> > >RSTRING_FSTR)
Testing following patch (slow computer), I think the return I added to the test
was hiding it, but I could not reproduce the bug on a pristine
r59362 at all even with:
make DEFS="-DRGENGC_CHECK_MODE=2 -DVM_CHECK_MODE=2"
diff --git a/string.c b/string.c
index 932ed5e85f..4a17fc1980 100644
--- a/string.c
+++ b/string.c
@@ -1415,8 +1415,15 @@ rb_str_free(VALUE str)
{
if (FL_TEST(str, RSTRING_FSTR)) {
st_data_t fstr = (st_data_t)str;
- st_delete(rb_vm_fstring_table(), &fstr, NULL);
- st_delete(rb_vm_tfstring_table(), &fstr, NULL);
+ if (FL_TEST_RAW(str, FL_TAINT)) {
+ st_delete(rb_vm_tfstring_table(), &fstr, NULL);
+ }
+ else {
+ st_delete(rb_vm_fstring_table(), &fstr, NULL);
+ if (!STR_EMBED_P(str)) {
+ st_delete(rb_vm_tfstring_table(), &fstr, NULL);
+ }
+ }
RB_DEBUG_COUNTER_INC(obj_str_fstr);
}
diff --git a/test/ruby/test_string.rb b/test/ruby/test_string.rb
index e68a3078eb..eb3d3133d2 100644
--- a/test/ruby/test_string.rb
+++ b/test/ruby/test_string.rb
@@ -2750,7 +2750,6 @@ def test_uplus_minus
assert_not_same(str, +str)
assert_same(str, -str)
- return unless @cls == String
bar = %w(b a r).join('')
assert_not_predicate bar, :tainted?
assert_not_predicate str, :tainted?
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>