array.c: array may be modified in the block

* array.c (rb_ary_any_p): the array may be modified in the yielded
  block, do not access directly.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46868 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2014-07-18 14:24:48 +00:00
Родитель d89c763528
Коммит a6ba688db3
1 изменённых файлов: 3 добавлений и 1 удалений

Просмотреть файл

@ -5426,7 +5426,9 @@ rb_ary_any_p(VALUE ary)
for (i = 0; i < len; ++i) if (RTEST(ptr[i])) return Qtrue;
}
else {
for (i = 0; i < len; ++i) if (RTEST(rb_yield(ptr[i]))) return Qtrue;
for (i = 0; i < RARRAY_LEN(ary); ++i) {
if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) return Qtrue;
}
}
return Qfalse;
}