From 7e8a9af9db42a21f6a1125a29e98c45ff9d5833b Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Fri, 19 Mar 2021 11:29:06 +0100 Subject: 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 --- test/-ext-/string/test_fstring.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'test/-ext-/string/test_fstring.rb') 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) -- cgit v1.2.3