diff --git a/sprintf.c b/sprintf.c index 0d685ddbaf..52771eb52a 100644 --- a/sprintf.c +++ b/sprintf.c @@ -521,7 +521,7 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt) for (t = p; t < end && *t != '%'; t++) ; if (t + 1 == end) { - rb_raise(rb_eArgError, "incomplete format specifier"); + rb_raise(rb_eArgError, "incomplete format specifier; use %%%% (double %%) instead"); } PUSH(p, t - p); if (coderange != ENC_CODERANGE_BROKEN && scanned < blen) { diff --git a/test/ruby/test_sprintf.rb b/test/ruby/test_sprintf.rb index df004305ec..b46f5189e2 100644 --- a/test/ruby/test_sprintf.rb +++ b/test/ruby/test_sprintf.rb @@ -425,11 +425,11 @@ class TestSprintf < Test::Unit::TestCase end def test_percent_sign_at_end - assert_raise_with_message(ArgumentError, "incomplete format specifier") do + assert_raise_with_message(ArgumentError, "incomplete format specifier; use %% (double %) instead") do sprintf("%") end - assert_raise_with_message(ArgumentError, "incomplete format specifier") do + assert_raise_with_message(ArgumentError, "incomplete format specifier; use %% (double %) instead") do sprintf("abc%") end end