diff options
author | Luke Gruber <luke.gru@gmail.com> | 2019-06-22 18:37:08 -0400 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-06-23 08:05:13 +0900 |
commit | ec8e5f5aa64e2a54cf1e303f2b012c98e8d521ba (patch) | |
tree | b8e7a123b5a179ae1319e8157ee34273a639b24d /array.c | |
parent | 3840791b7ebb2442724d96c69a791d0e678fbc6c (diff) |
array.c: always check frozenness in Array#unshift. Fixes [Bug #15952]
Closes: https://github.com/ruby/ruby/pull/2251
Diffstat (limited to 'array.c')
-rw-r--r-- | array.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -1373,6 +1373,8 @@ ary_ensure_room_for_unshift(VALUE ary, int argc) rb_raise(rb_eIndexError, "index %ld too big", new_len); } + rb_ary_modify(ary); + if (ARY_SHARED_P(ary)) { VALUE shared = ARY_SHARED(ary); capa = RARRAY_LEN(shared); @@ -1383,7 +1385,6 @@ ary_ensure_room_for_unshift(VALUE ary, int argc) } } - rb_ary_modify(ary); capa = ARY_CAPA(ary); if (capa - (capa >> 6) <= new_len) { ary_double_capa(ary, new_len); |