From ce7f8287e29fb3f87d74c883d04a30754103e11e Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 31 Oct 2015 01:22:51 +0000 Subject: [PATCH] eval_error.c: Fix a format of `NameError#message` * eval_error.c (undef_mesg_for): fix typo. Before this commit `ArgumentError: malformed format string - %$` was raised when `NameError#message` is called. [ruby-core:71282] [Bug #11640] [Fix GH-1077] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52400 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ eval_error.c | 2 +- test/ruby/test_exception.rb | 12 ++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 10bee41bc1..b492bec045 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Sat Oct 31 10:22:49 2015 yui-knk + + * eval_error.c (undef_mesg_for): fix typo. Before this commit + `ArgumentError: malformed format string - %$` was raised when + `NameError#message` is called. [ruby-core:71282] [Bug #11640] + [Fix GH-1077] + Fri Oct 30 21:12:45 2015 Kazuki Tsujimoto * gems/bundled_gems: update to power_assert 0.2.5. diff --git a/eval_error.c b/eval_error.c index 395b9b0196..24bab9eab9 100644 --- a/eval_error.c +++ b/eval_error.c @@ -208,7 +208,7 @@ ruby_error_print(void) error_print(); } -#define undef_mesg_for(v, k) rb_fstring_cstr("undefined"v" method `%1$s' for "k" `%$s'") +#define undef_mesg_for(v, k) rb_fstring_cstr("undefined"v" method `%1$s' for "k" `%2$s'") #define undef_mesg(v) ( \ is_mod ? \ undef_mesg_for(v, "module") : \ diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb index f8ddd9d3fa..d0ed477916 100644 --- a/test/ruby/test_exception.rb +++ b/test/ruby/test_exception.rb @@ -721,4 +721,16 @@ $stderr = $stdout; raise "\x82\xa0"') do |outs, errs, status| assert_raise(NameError) {a.instance_eval("foo")} assert_raise(NoMethodError, bug10969) {a.public_send("bar", true)} end + + def test_message_of_name_error + begin + Module.new do + module_function :foo + end + rescue => e + error = e + end + + assert_match /\Aundefined method `foo' for module `#'\z/, error.message + end end