わたなべです. Yukihiro Matsumoto <matz / netlab.co.jp> writes: :いいえ,バグです.結果がFixnumの範囲に収まらない場合に0xを解 :釈するのを忘れていました. ちょっと違います. 0x も勘定に入れて strlen してるからです. このままだと 0x0000000 のように 9 バイト以上になると Bignum として扱われるためちょっと効率が悪いです. で, わたしはこんな感じにしました. -- わたなべひろふみ
--- bignum.c.orig Tue Feb 3 13:21:16 1998 +++ bignum.c Tue Feb 3 11:21:22 1998 @@ -197,8 +197,10 @@ } - len = strlen(str); if (base == 8) { - len = 3*len*sizeof(char); + while (*str == '0') str++; + len = 3*strlen(str)*sizeof(char); } else { /* base == 10 or 16 */ - len = 4*len*sizeof(char); + if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X')) str += 2; + while (*str == '0') str++; + len = 4*strlen(str)*sizeof(char); }