summaryrefslogtreecommitdiff
path: root/sprintf.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-07-16 16:58:58 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-07-16 16:58:58 +0000
commit4d16ce7da4b142d411513048895972d682a45d0f (patch)
treeac0db0090dff98e25f3ec869b18fb81c057ecfe8 /sprintf.c
parentbc8724d05fcde5d703f622855844460f35fcfce7 (diff)
* sprintf.c (rb_str_format): make %u behave like %d for negative
values, since decimal format does not work with preceding dots. [ruby-core:11575] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12809 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'sprintf.c')
-rw-r--r--sprintf.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/sprintf.c b/sprintf.c
index 29ebc0e66b..069f6fbf93 100644
--- a/sprintf.c
+++ b/sprintf.c
@@ -491,14 +491,13 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt)
switch (*p) {
case 'd':
case 'i':
+ case 'u':
sign = 1; break;
case 'o':
case 'x':
case 'X':
case 'b':
case 'B':
- case 'u':
- default:
if (flags&(FPLUS|FSPACE)) sign = 1;
break;
}
@@ -584,13 +583,8 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt)
else {
s = nbuf;
if (v < 0) {
- if (base == 10) {
- rb_warning("negative number for %%u specifier");
- }
- else if (!(flags&(FPREC|FZERO))) {
- strcpy(s, "..");
- s += 2;
- }
+ strcpy(s, "..");
+ s += 2;
}
sprintf(fbuf, "%%l%c", *p == 'X' ? 'x' : *p);
sprintf(s, fbuf, v);