こんにちは、なかむら(う)です。

In message "[ruby-list:39224] Re: printf %b bug (Re:  Re: What processor do you run ruby on?)"
    on Feb.18,2004 18:06:30, <usa / garbagecollect.jp> wrote:
| テストを書きながらいろいろ考えているのですが、現状、もしくは
| [ruby-list:39220]パッチ後の、
|   sprintf("%+04b", -1)  # => "-111"
|   sprintf("%+04o", -1)  # => "-001"
|   sprintf("%+04d", -1)  # => "-001"
|   sprintf("%+04x", -1)  # => "-001"
| というのはきっとまずいですよねえ。

こうみたいです。
※[ruby-list:39220]を含む。

diff -u -1 -p -r1.37 sprintf.c --- sprintf.c 18 Feb 2004 01:24:13 -0000 1.37 +++ sprintf.c 18 Feb 2004 13:10:45 -0000 @@ -546,3 +546,3 @@ rb_f_sprintf(argc, argv) } - else if (!(flags&FPREC)) { + else if (!(flags&(FPREC|FZERO))) { strcpy(s, ".."); @@ -604,3 +604,3 @@ rb_f_sprintf(argc, argv) t = RSTRING(tmp)->ptr; - if (!(flags&FPREC)) { + if (!(flags&(FPREC|FZERO))) { strcpy(t, ".."); @@ -662,3 +662,3 @@ rb_f_sprintf(argc, argv) - if (bignum && !RBIGNUM(val)->sign) + if (bignum && RBIGNUM(val)->sign) c = sign_bits(base, p);
それでは。 -- U.Nakamura <usa / garbagecollect.jp>