diff options
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r-- | vm_insnhelper.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c index a0f63dfbc4..415070f852 100644 --- a/vm_insnhelper.c +++ b/vm_insnhelper.c @@ -3647,7 +3647,12 @@ vm_opt_aref(VALUE recv, VALUE obj) } else if (RBASIC_CLASS(recv) == rb_cArray && BASIC_OP_UNREDEFINED_P(BOP_AREF, ARRAY_REDEFINED_OP_FLAG)) { - return rb_ary_aref1(recv, obj); + if (FIXNUM_P(obj)) { + return rb_ary_entry_internal(recv, FIX2LONG(obj)); + } + else { + return rb_ary_aref1(recv, obj); + } } else if (RBASIC_CLASS(recv) == rb_cHash && BASIC_OP_UNREDEFINED_P(BOP_AREF, HASH_REDEFINED_OP_FLAG)) { |