[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]