diff --git a/sprintf.c b/sprintf.c index 52a7168dc9..9a08764448 100644 --- a/sprintf.c +++ b/sprintf.c @@ -120,7 +120,7 @@ sign_bits(int base, const char *p) #define GETASTER(val) do { \ t = p++; \ n = 0; \ - GETNUM(n, (val)); \ + GETNUM(n, val); \ if (*p == '$') { \ tmp = GETPOSARG(n); \ } \ diff --git a/test/ruby/test_sprintf.rb b/test/ruby/test_sprintf.rb index a57509f458..2a0fc487c1 100644 --- a/test/ruby/test_sprintf.rb +++ b/test/ruby/test_sprintf.rb @@ -309,6 +309,12 @@ class TestSprintf < Test::Unit::TestCase def test_star assert_equal("-1 ", sprintf("%*d", -3, -1)) + assert_raise_with_message(ArgumentError, /width too big/) { + sprintf("%*999999999999999999999999999999999999999999999999999999999999$d", 1) + } + assert_raise_with_message(ArgumentError, /prec too big/) { + sprintf("%.*999999999999999999999999999999999999999999999999999999999999$d", 1) + } end def test_escape