From: matz@... (Yukihiro Matsumoto) Date: 1998-07-13T15:29:59+09:00 Subject: [ruby-list:8703] Re: can't build 1.1b9_28 on digital-unix まつもと ゆきひろです In message "[ruby-list:8689] Re: can't build 1.1b9_28 on digital-unix" on 98/07/10, Go Nakagawa writes: |中川です。 |どうも bignorm() があやしいのでこんなことを |してみました。sizeof(VALUE)==4 の時とつじつまをあわせてる |だけです。理屈はわかってません(キッパリ) え〜,なんでこれで動くんだろう? 謎. 以下のことを教えていただけませんか? * sizeof(short)の値は? 2? * sizeof(VALUE)の値は? 8? * 添付のパッチを当てた結果はいかがでしょう? --- bignum.c 1998/07/09 08:40:11 1.1.1.2.2.20 +++ bignum.c 1998/07/13 06:28:51 @@ -87,5 +87,3 @@ - if (len*sizeof(USHORT) < sizeof(VALUE) || - (len*sizeof(USHORT) == sizeof(VALUE) && - ds[sizeof(VALUE)/sizeof(USHORT)-1] <= 0x3fff)) { + if (len*sizeof(USHORT) <= sizeof(VALUE)) { long num = 0; @@ -94,2 +92,3 @@ } + if (num > 0) { if (RBIGNUM(x)->sign) { @@ -98,2 +97,3 @@ else if (NEGFIXABLE(-num)) return INT2FIX(-num); + } }