diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | test/ruby/test_sprintf.rb | 2 | ||||
-rw-r--r-- | vsnprintf.c | 1 |
3 files changed, 8 insertions, 0 deletions
@@ -1,3 +1,8 @@ +Tue Oct 19 19:30:11 2010 NARUSE, Yui <naruse@ruby-lang.org> + + * vsnprintf.c (BSD_vfprintf): clear ALT flag for %a. + [ruby-core:32841] [ruby-core:32848] + Tue Oct 19 12:19:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> * vsnprintf.c (BSD_vfprintf): fix over-count of field size. diff --git a/test/ruby/test_sprintf.rb b/test/ruby/test_sprintf.rb index 62def514f0..3919f70f7d 100644 --- a/test/ruby/test_sprintf.rb +++ b/test/ruby/test_sprintf.rb @@ -221,8 +221,10 @@ class TestSprintf < Test::Unit::TestCase assert_equal("-0x1.08p+0", sprintf("%010a", -1.03125), bug3962) bug3964 = '[ruby-core:32848]' + assert_equal("0x000000000000000p+0", sprintf("%020a", 0), bug3962) assert_equal("0x000000000000001p+0", sprintf("%020a", 1), bug3964) assert_equal("-0x00000000000001p+0", sprintf("%020a", -1), bug3964) + assert_equal("0x000000000000000p+0", sprintf("%#020a", 0), bug3962) end BSIZ = 120 diff --git a/vsnprintf.c b/vsnprintf.c index c0853389c6..1f4172efb8 100644 --- a/vsnprintf.c +++ b/vsnprintf.c @@ -784,6 +784,7 @@ reswitch: switch (ch) { #ifdef FLOATING_POINT case 'a': case 'A': + flags &= ~ALT; if (prec >= 0) prec++; goto fp_begin; |