diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | sprintf.c | 12 |
2 files changed, 9 insertions, 9 deletions
@@ -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 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> * string.c (rb_str_rindex_m): accept string-like object convertible @@ -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); |