aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-11-08 06:44:39 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-11-08 06:44:39 +0000
commit599a7071c1789013dc8c8a4edeb5d54bc2fb71a6 (patch)
tree0884e6812de4fa89f3c0036479bcb77acbbfdf69
parent1f3e96b7ac73401c15df4d77bdcf6f441813c443 (diff)
downloadruby-599a7071c1789013dc8c8a4edeb5d54bc2fb71a6.tar.gz
* vsnprintf.c (BSD_vfprintf): fix precision specifier doesn't
work well on %f. [ruby-dev:42552] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29719 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--test/ruby/test_sprintf.rb1
-rw-r--r--vsnprintf.c2
3 files changed, 8 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 70ef18dcc6..2d79074289 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Nov 8 15:40:56 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): fix precision specifier doesn't
+ work well on %f. [ruby-dev:42552]
+
Mon Nov 8 14:41:40 2010 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.c (get_wsa_extension_function): typos.
diff --git a/test/ruby/test_sprintf.rb b/test/ruby/test_sprintf.rb
index 33794c9296..b82cbc4b90 100644
--- a/test/ruby/test_sprintf.rb
+++ b/test/ruby/test_sprintf.rb
@@ -189,6 +189,7 @@ class TestSprintf < Test::Unit::TestCase
assert_equal("36893488147419111424",
sprintf("%20.0f", 36893488147419107329.0))
assert_equal(" Inf", sprintf("% 0e", 1.0/0.0), "moved from btest/knownbug")
+ assert_equal(" -0.", sprintf("%#10.0f", -0.5), "[ruby-dev:42552]")
end
def test_float_hex
diff --git a/vsnprintf.c b/vsnprintf.c
index 1ff061ed9c..5f564c2abf 100644
--- a/vsnprintf.c
+++ b/vsnprintf.c
@@ -855,6 +855,8 @@ fp_begin: _double = va_arg(ap, double);
size += prec + 1;
} else if (!prec) { /* "0" */
size = 1;
+ if (flags & ALT)
+ size += 1;
} else /* "0.X" */
size = prec + 2;
} else if (expt >= ndig) { /* fixed g fmt */