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) <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
> 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/
>
>