From 1258a0fb90ea63bf1ec108815cce0d552acfc726 Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Thu, 7 May 2020 21:49:40 +0200 Subject: Remove the 65 size limit for name_err_mesg_to_str MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This limit was introduced on Nov 20 1996 in 554b989ba1623b9f6a0b76f00824c83a23fbcbc1 Apparently to protect from a buffer overflow: * eval.c (f_missing): オブジェクトの文字列表現が長すぎる時バッファ を書き潰していた However I tested that path with very large strings and it works fine. --- test/ruby/test_name_error.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'test') diff --git a/test/ruby/test_name_error.rb b/test/ruby/test_name_error.rb index 102a4a67e8..ec03046c22 100644 --- a/test/ruby/test_name_error.rb +++ b/test/ruby/test_name_error.rb @@ -127,4 +127,17 @@ class TestNameError < Test::Unit::TestCase -> {require ARGV[0]}.call end; end + + def test_large_receiver_inspect + receiver = Class.new do + def self.inspect + 'A' * 120 + end + end + + error = assert_raise(NameError) do + receiver::FOO + end + assert_equal "uninitialized constant #{'A' * 120}::FOO", error.message + end end -- cgit v1.2.3