summaryrefslogtreecommitdiff
path: root/array.c
diff options
context:
space:
mode:
authorAaron Patterson <tenderlove@ruby-lang.org>2021-08-31 16:58:29 -0700
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-09-02 01:22:19 +0900
commitcd4f5b13228879d954fa97b6aa479c4a5ef4fb0a (patch)
tree8c381dcc4235579c63b4fd69a3bff2f84808329b /array.c
parent73b22b3ce9994b3e674de4d5016d2d9130b0e27d (diff)
Guard array when appending
This prevents early collection of the array. The GC doesn't see the array on the stack when Ruby is compiled with optimizations enabled [ruby-core:105099] [Bug #18140]
Diffstat (limited to 'array.c')
-rw-r--r--array.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/array.c b/array.c
index 34fdc7b22a..50a61db876 100644
--- a/array.c
+++ b/array.c
@@ -4845,6 +4845,7 @@ ary_append(VALUE x, VALUE y)
if (n > 0) {
rb_ary_splice(x, RARRAY_LEN(x), 0, RARRAY_CONST_PTR_TRANSIENT(y), n);
}
+ RB_GC_GUARD(y);
return x;
}