From 4d16ce7da4b142d411513048895972d682a45d0f Mon Sep 17 00:00:00 2001 From: matz Date: Mon, 16 Jul 2007 16:58:58 +0000 Subject: * 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 --- sprintf.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) (limited to 'sprintf.c') 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); -- cgit v1.2.3