Array#slice!

中川といいます。

Array#slice! ã«ã€é…åˆ—ã®ã‚µã‚¤ã‚ºã‚’è¶…ãˆã‚‹è² ã®å€¤ã‚’æ¸¡ã—ãŸã¨ãã®
挙動がおかしいと思います。
trunk と 1.8 の最新版で再現しました。

$ ./ruby -v
ruby 1.8.6 (2007-08-28 patchlevel 5000) [i686-darwin8.10.1]

$ ./ruby -e ‘a=[1,2,3,4,5];a.slice!(-3,1);p a’
[1, 2, 4, 5]
$ ./ruby -e ‘a=[1,2,3,4,5];a.slice!(-8,1);p a’
[1, 2, 4, 5]

添付のパッチをあてると直りました。

$ ./ruby -e ‘a=[1,2,3,4,5];a.slice!(-3,1);p a’
[1, 2, 4, 5]
$ ./ruby -e ‘a=[1,2,3,4,5];a.slice!(-8,1);p a’
-e:1:in `slice!’: index -8 out of array (IndexError)
from -e:1