From d8ef0a98c670449b20436947f5ebbd327ed5ab0d Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Fri, 6 Jan 2023 10:24:09 -0500 Subject: [Bug #19319] Fix crash in rb_str_casemap The following code crashes on my machine: ``` GC.stress = true str = "testing testing testing" puts str.capitalize ``` We need to ensure that the object `buffer_anchor` remains on the stack so it does not get GC'd. --- string.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'string.c') diff --git a/string.c b/string.c index 6fd165cd5a..fc5629638c 100644 --- a/string.c +++ b/string.c @@ -7329,6 +7329,8 @@ rb_str_casemap(VALUE source, OnigCaseFoldType *flags, rb_encoding *enc) DATA_PTR(buffer_anchor) = 0; mapping_buffer_free(current_buffer); + RB_GC_GUARD(buffer_anchor); + /* TODO: check about string terminator character */ str_enc_copy(target, source); /*ENC_CODERANGE_SET(mapped, cr);*/ -- cgit v1.2.1