ruby-changes:70769
From: Peter <ko1@a...>
Date: Fri, 7 Jan 2022 04:33:49 +0900 (JST)
Subject: [ruby-changes:70769] 5f55b03716 (master): Set correct termlen for frozen strings
https://git.ruby-lang.org/ruby.git/commit/?id=5f55b03716 From 5f55b03716f0fc8aab227c8a752eefed2a58b38f Mon Sep 17 00:00:00 2001 From: Peter Zhu <peter@p...> Date: Thu, 6 Jan 2022 13:35:17 -0500 Subject: Set correct termlen for frozen strings Frozen strings should have the same termlen as the original string when copy_encoding is true. --- string.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/string.c b/string.c index 5b3c7cd57b6..389af1e73af 100644 --- a/string.c +++ b/string.c @@ -1419,9 +1419,10 @@ str_new_frozen_buffer(VALUE klass, VALUE orig, int copy_encoding) https://github.com/ruby/ruby/blob/trunk/string.c#L1419 VALUE str; long len = RSTRING_LEN(orig); + int termlen = copy_encoding ? TERM_LEN(orig) : 1; - if (STR_EMBED_P(orig) || STR_EMBEDDABLE_P(len, 1)) { - str = str_new(klass, RSTRING_PTR(orig), len); + if (STR_EMBED_P(orig) || STR_EMBEDDABLE_P(len, termlen)) { + str = str_new0(klass, RSTRING_PTR(orig), len, termlen); assert(STR_EMBED_P(str)); } else { -- cgit v1.2.1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/