From 6283ae8d369bd2f8a022bb69bc5b742c58529dec Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 16 Jan 2024 23:59:55 +0900 Subject: [ruby/stringio] Update the coderange after overwrite Fix https://bugs.ruby-lang.org/issues/20185 https://github.com/ruby/stringio/commit/8230552a46 --- ext/stringio/stringio.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'ext/stringio') diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c index 74e2b95c99..4eb1511787 100644 --- a/ext/stringio/stringio.c +++ b/ext/stringio/stringio.c @@ -1464,8 +1464,14 @@ strio_write(VALUE self, VALUE str) } } else { + int cr0 = ENC_CODERANGE(ptr->string); + int cr = ENC_CODERANGE_UNKNOWN; + if (rb_enc_asciicompat(enc) && rb_enc_asciicompat(enc2)) { + cr = ENC_CODERANGE_AND(cr0, ENC_CODERANGE(str)); + } strio_extend(ptr, ptr->pos, len); memmove(RSTRING_PTR(ptr->string)+ptr->pos, RSTRING_PTR(str), len); + if (cr != cr0) ENC_CODERANGE_SET(ptr->string, cr); } RB_GC_GUARD(str); ptr->pos += len; -- cgit v1.2.3