ruby-changes:5454
From: shyouhei <ko1@a...>
Date: Sun, 8 Jun 2008 04:27:58 +0900 (JST)
Subject: [ruby-changes:5454] Ruby:r16957 (ruby_1_8_6): merge revision(s) 14036:14039:
shyouhei 2008-06-08 04:27:49 +0900 (Sun, 08 Jun 2008) New Revision: 16957 Modified files: branches/ruby_1_8_6/bignum.c branches/ruby_1_8_6/sprintf.c branches/ruby_1_8_6/version.h Log: merge revision(s) 14036:14039: * bignum.c (rb_big2str0): do not clobber space for sign. * sprintf.c (remove_sign_bits): extends sign bit first. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_6/version.h?r1=16957&r2=16956&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_6/sprintf.c?r1=16957&r2=16956&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_6/bignum.c?r1=16957&r2=16956&diff_format=u Index: ruby_1_8_6/version.h =================================================================== --- ruby_1_8_6/version.h (revision 16956) +++ ruby_1_8_6/version.h (revision 16957) @@ -2,7 +2,7 @@ #define RUBY_RELEASE_DATE "2008-06-08" #define RUBY_VERSION_CODE 186 #define RUBY_RELEASE_CODE 20080608 -#define RUBY_PATCHLEVEL 150 +#define RUBY_PATCHLEVEL 151 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 Index: ruby_1_8_6/bignum.c =================================================================== --- ruby_1_8_6/bignum.c (revision 16956) +++ ruby_1_8_6/bignum.c (revision 16957) @@ -706,7 +706,7 @@ while (k--) { s[--j] = ruby_digitmap[num % base]; num /= base; - if (!trim && j < 1) break; + if (!trim && j <= 1) break; if (trim && i == 0 && num == 0) break; } } Index: ruby_1_8_6/sprintf.c =================================================================== --- ruby_1_8_6/sprintf.c (revision 16956) +++ ruby_1_8_6/sprintf.c (revision 16957) @@ -18,6 +18,8 @@ #include <math.h> #define BIT_DIGITS(N) (((N)*146)/485 + 1) /* log2(10) =~ 146/485 */ +#define BITSPERDIG (SIZEOF_BDIGITS*CHAR_BIT) +#define EXTENDSIGN(n, l) (((~0 << (n)) >> (((n)*(l)) % BITSPERDIG)) & ~(~0 << (n))) static void fmt_setup _((char*,int,int,int,int)); @@ -36,7 +38,7 @@ } } else if (base == 8) { - if (*t == '3') t++; + *t |= EXTENDSIGN(3, strlen(t)); while (*t == '7') { t++; } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/