summaryrefslogtreecommitdiffhomepage
path: root/src/array.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2016-11-16 02:10:44 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2016-11-16 02:10:44 +0900
commit1f554ff8540d61e30d0e649bf80c0ecd27b40ad6 (patch)
tree81dd4166abb3a3f3b7eae5631b8e52af81050ced /src/array.c
parent242b21947102d98aba2fa3db2725b129ca547f20 (diff)
downloadmruby-1f554ff8540d61e30d0e649bf80c0ecd27b40ad6.tar.gz
mruby-1f554ff8540d61e30d0e649bf80c0ecd27b40ad6.zip
Fixed rindex calling into mrb_equal bug
Fixed by Alex Snaps and reported by Mathieu Leduc-Hamel, both from shopify.com. Thank you!
Diffstat (limited to 'src/array.c')
-rw-r--r--src/array.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/array.c b/src/array.c
index e8882b7a3..5a319d809 100644
--- a/src/array.c
+++ b/src/array.c
@@ -868,13 +868,16 @@ static mrb_value
mrb_ary_rindex_m(mrb_state *mrb, mrb_value self)
{
mrb_value obj;
- mrb_int i;
+ mrb_int i, len;
mrb_get_args(mrb, "o", &obj);
for (i = RARRAY_LEN(self) - 1; i >= 0; i--) {
if (mrb_equal(mrb, RARRAY_PTR(self)[i], obj)) {
return mrb_fixnum_value(i);
}
+ if (i > (len = RARRAY_LEN(self))) {
+ i = len;
+ }
}
return mrb_nil_value();
}