diff options
author | NARUSE, Yui <naruse@airemix.jp> | 2021-04-02 16:06:31 +0900 |
---|---|---|
committer | NARUSE, Yui <naruse@airemix.jp> | 2021-04-02 16:06:31 +0900 |
commit | 4e2738f477b5343a0d48a400c975220fed123c9b (patch) | |
tree | de0b2bc713498c3a26c3f4dac5fa0daee58b8bc5 /test | |
parent | 855401da495117fcf5d258fe43b71010abc43d9a (diff) |
merge revision(s) 7e8a9af9db42a21f6a1125a29e98c45ff9d5833b: [Backport #17732]
rb_enc_interned_str: handle autoloaded encodings
If called with an autoloaded encoding that was not yet
initialized, `rb_enc_interned_str` would crash with
a NULL pointer exception.
See: https://github.com/ruby/ruby/pull/4119#issuecomment-800189841
---
encoding.c | 28 ++++++++++++----------------
ext/-test-/string/depend | 3 +++
ext/-test-/string/fstring.c | 15 +++++++++++++++
internal/encoding.h | 3 +++
string.c | 4 ++++
test/-ext-/string/test_fstring.rb | 16 ++++++++++++++++
6 files changed, 53 insertions(+), 16 deletions(-)
Diffstat (limited to 'test')
-rw-r--r-- | test/-ext-/string/test_fstring.rb | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/test/-ext-/string/test_fstring.rb b/test/-ext-/string/test_fstring.rb index 76afa30e14..9b4956ecef 100644 --- a/test/-ext-/string/test_fstring.rb +++ b/test/-ext-/string/test_fstring.rb @@ -12,6 +12,22 @@ class Test_String_Fstring < Test::Unit::TestCase yield fstr end + def test_rb_enc_interned_str_autoloaded_encoding + assert_separately([], <<~RUBY) + require '-test-/string' + assert_include(Encoding::Windows_31J.inspect, 'autoload') + Bug::String.rb_enc_interned_str(Encoding::Windows_31J) + RUBY + end + + def test_rb_enc_str_new_autoloaded_encoding + assert_separately([], <<~RUBY) + require '-test-/string' + assert_include(Encoding::Windows_31J.inspect, 'autoload') + Bug::String.rb_enc_str_new(Encoding::Windows_31J) + RUBY + end + def test_instance_variable str = __method__.to_s * 3 str.instance_variable_set(:@test, 42) |