[exerb-dev:0582] Re: Exerb で作成したプログラムの Integer.to_s で不具合

Back to archive index

MURASE Masamitsu masam****@gmail*****
2012年 4月 14日 (土) 17:42:22 JST


村瀬です。

昨日のメール中の「修正方法」は、 Ruby のソースコードとしては下記の方が分かりやすくてよさそうでした。
#= ここから =
       if (trim && ds[i-1] == 0) i--;
       k = SIZEOF_BDIGITS;
       while (k--) {
           s[--j] = ruby_digitmap[num % base];
           num /= base;
           if (!trim && j <= 1) break;
           if (trim && i == 0 && num == 0) break;
       }
   }
   RB_GC_GUARD(t);  /* 追加 */
   if (trim) {while (s[j] == '0') j++;}
   i = RSTRING(ss)->len - j;
   if (RBIGNUM(x)->sign) {
       memmove(s, s+j, i);
       RSTRING(ss)->len = i-1;
   }
   else {
#= ここまで =

Ruby 本家に障害として挙がっていなければ、投稿してみます。

また、参考までにパッチファイルを添付いたします。

以上です。
-- 
Mail:     masam****@gmail*****
村瀬 昌満 (MURASE Masamitsu)
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: bignum_gc_guard.diff
型:         application/octet-stream
サイズ:     446 バイト
説明:       無し
下载 



exerb-developer メーリングリストの案内
Back to archive index