summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authornagachika <nagachika@ruby-lang.org>2023-03-21 12:02:04 +0900
committernagachika <nagachika@ruby-lang.org>2023-03-21 12:02:04 +0900
commit159930b7857bd3fe603840f686edffb54693d2a7 (patch)
tree2b0fa83ad8daa9818f035b5ea024feed19a2678e /string.c
parenteba3f787cbd38acf60fff6bdb450aacfc2e9c3a1 (diff)
merge revision(s) d8ef0a98c670449b20436947f5ebbd327ed5ab0d: [Backport #19319]
[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(+)
Diffstat (limited to 'string.c')
-rw-r--r--string.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/string.c b/string.c
index 24acdfae0e..1a36e957df 100644
--- a/string.c
+++ b/string.c
@@ -7110,6 +7110,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);*/