summaryrefslogtreecommitdiff
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
parenteba3f787cbd38acf60fff6bdb450aacfc2e9c3a1 (diff)
downloadruby-159930b7857bd3fe603840f686edffb54693d2a7.tar.gz
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(+)
-rw-r--r--string.c2
-rw-r--r--version.h2
2 files changed, 3 insertions, 1 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);*/
diff --git a/version.h b/version.h
index 0dc0c87858..fb6cd1f326 100644
--- a/version.h
+++ b/version.h
@@ -11,7 +11,7 @@
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
#define RUBY_VERSION_TEENY 4
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
-#define RUBY_PATCHLEVEL 195
+#define RUBY_PATCHLEVEL 196
#define RUBY_RELEASE_YEAR 2023
#define RUBY_RELEASE_MONTH 3