* 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
This commit is contained in:
matz 2007-07-16 16:58:58 +00:00
parent bc8724d05f
commit 4d16ce7da4
2 changed files with 9 additions and 9 deletions

View File

@ -3,6 +3,12 @@ Mon Jul 16 23:07:51 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/base64.rb (Base64::b64encode): should not specify /o option * lib/base64.rb (Base64::b64encode): should not specify /o option
for regular expression. [ruby-dev:31221] for regular expression. [ruby-dev:31221]
Mon Jul 16 22:57:53 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
* 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]
Mon Jul 16 18:29:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org> Mon Jul 16 18:29:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
* string.c (rb_str_rindex_m): accept string-like object convertible * string.c (rb_str_rindex_m): accept string-like object convertible

View File

@ -491,14 +491,13 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt)
switch (*p) { switch (*p) {
case 'd': case 'd':
case 'i': case 'i':
case 'u':
sign = 1; break; sign = 1; break;
case 'o': case 'o':
case 'x': case 'x':
case 'X': case 'X':
case 'b': case 'b':
case 'B': case 'B':
case 'u':
default:
if (flags&(FPLUS|FSPACE)) sign = 1; if (flags&(FPLUS|FSPACE)) sign = 1;
break; break;
} }
@ -584,13 +583,8 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt)
else { else {
s = nbuf; s = nbuf;
if (v < 0) { if (v < 0) {
if (base == 10) { strcpy(s, "..");
rb_warning("negative number for %%u specifier"); s += 2;
}
else if (!(flags&(FPREC|FZERO))) {
strcpy(s, "..");
s += 2;
}
} }
sprintf(fbuf, "%%l%c", *p == 'X' ? 'x' : *p); sprintf(fbuf, "%%l%c", *p == 'X' ? 'x' : *p);
sprintf(s, fbuf, v); sprintf(s, fbuf, v);