From: "Юрий Соколов" Date: 2012-11-22T18:09:27+09:00 Subject: [ruby-core:49871] Re: [ruby-trunk - Bug #7383] Use stricter cache check in load.c --bcaec51b15f1d7cf2204cf11d2fe Content-Type: text/plain; charset=ISO-8859-1 Hiroshi, Adding size check is enough in this case. But rb_ary_dup_of_p is more useful in the wild, I think. With regards, Yura 2012/11/19 h.shirosaki (Hiroshi Shirosaki) > > Issue #7383 has been updated by h.shirosaki (Hiroshi Shirosaki). > > File 0001-Fix-cache-validity-check-of-require.patch added > > Yura, thank you. > Indeed rb_ary_shared_with_p does not react against #shift or #pop. > Original array remains shared with the snapshot. > However, I think adding a check of array length would be sufficient for > that. This fix has no performance impact, still O(1). I've attached a patch > with tests. > Are there any reasons that such a strict check is needed? > ---------------------------------------- > Bug #7383: Use stricter cache check in load.c > https://bugs.ruby-lang.org/issues/7383#change-33097 > > Author: funny_falcon (Yura Sokolov) > Status: Open > Priority: High > Assignee: h.shirosaki (Hiroshi Shirosaki) > Category: core > Target version: 2.0.0 > ruby -v: ruby 2.0.0dev (2012-11-18 trunk 37708) [x86_64-linux] > > > rb_ary_shared_with_p does not react when #shift or #pop is called on > original array. > > This patch introduce rb_ary_dup_of_p , which makes more adequate check for > duplicate > of array. > > https://github.com/ruby/ruby/pull/216 > https://github.com/ruby/ruby/pull/216.patch > > > -- > http://bugs.ruby-lang.org/ > > --bcaec51b15f1d7cf2204cf11d2fe Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hiroshi,

Adding size check is enough in this case.
But rb_ary_dup= _of_p is more useful in the wild, I think.

With regards,
Yura
=
2012/11/19 h.shirosaki (Hiroshi Shirosaki) <= span dir=3D"ltr"><h.shirosaki@gmail.com>

Issue #7383 has been updated by h.shirosaki (Hiroshi Shirosaki).

File 0001-Fix-cache-validity-check-of-require.patch added

Yura, thank you.
Indeed rb_ary_shared_with_p does not react against #shift or #pop. Original= array remains shared with the snapshot.
However, I think adding a check of array length would be sufficient for tha= t. This fix has no performance impact, still O(1). I've attached a patc= h with tests.
Are there any reasons that such a strict check is needed?
----------------------------------------
Bug #7383: Use stricter cache check in load.c
https://bugs.ruby-lang.org/issues/7383#change-33097

Author: funny_falcon (Yura Sokolov)
Status: Open
Priority: High
Assignee: h.shirosaki (Hiroshi Shirosaki)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-11-18 trunk 37708) [x86_64-linux]


rb_ary_shared_with_p does not react when #shift or #pop is called on origin= al array.

This patch introduce rb_ary_dup_of_p , which makes more adequate check for = duplicate
of array.

https:/= /github.com/ruby/ruby/pull/216
h= ttps://github.com/ruby/ruby/pull/216.patch


--
http://bugs.ruby-l= ang.org/


--bcaec51b15f1d7cf2204cf11d2fe--