From 176c4bb3c7db87ca5b0486012cb6a005105448c5 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Thu, 27 Jun 2024 14:02:49 -0400 Subject: Fix corruption of internal encoding string [Bug #20598] Just like [Bug #20595], Encoding#name_list and Encoding#aliases can have their strings corrupted when Encoding.default_internal is set to nil. Co-authored-by: Matthew Valentine-House --- encoding.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'encoding.c') diff --git a/encoding.c b/encoding.c index a09d84b757..222610b1d4 100644 --- a/encoding.c +++ b/encoding.c @@ -1798,7 +1798,7 @@ static int rb_enc_name_list_i(st_data_t name, st_data_t idx, st_data_t arg) { VALUE ary = (VALUE)arg; - VALUE str = rb_fstring_cstr((char *)name); + VALUE str = rb_interned_str_cstr((char *)name); rb_ary_push(ary, str); return ST_CONTINUE; } @@ -1843,7 +1843,7 @@ rb_enc_aliases_enc_i(st_data_t name, st_data_t orig, st_data_t arg) str = rb_fstring_cstr(rb_enc_name(enc)); rb_ary_store(ary, idx, str); } - key = rb_fstring_cstr((char *)name); + key = rb_interned_str_cstr((char *)name); rb_hash_aset(aliases, key, str); return ST_CONTINUE; } -- cgit v1.2.3