From: Yusuke Endoh Date: 2010-06-28T05:15:28+09:00 Subject: [ruby-dev:41752] [Bug #3490][Assigned] test_pack_utf8 failure on mswin64 チケット #3490 が更新されました。 (by Yusuke Endoh) ステータス OpenからAssignedに変更 担当者 Usaku NAKAMURAにセット 優先度 NormalからLowに変更 遠藤です。 受理されるべきでない値が受理されるのでバグですが、受理されるべき 値が受理されないわけではないので、致命的ではないと判断し優先度を Low にします。 個人的には 1.9.2 では WONTFIX が望ましいと思いますが、usa さんの 意見はどうでしょうか。 SIGNED_VALUE rb_big2long(VALUE x) あたりが、sizeof(VALUE) == sizeof(long) を期待している気がする ので、以下のようなパッチで直るんじゃないかと思いました。 ただ、直ったとしてもこのパッチには他の環境での影響が怖いのと、 他にも直すべき場所がありそう (rb_big2ulong とか) なので、検討が 必要だと思います。 diff --git a/bignum.c b/bignum.c index 24f1340..cd2fbcb 100644 --- a/bignum.c +++ b/bignum.c @@ -1189,11 +1189,11 @@ rb_big2long(VALUE x) { VALUE num = big2ulong(x, "long", TRUE); - if ((SIGNED_VALUE)num < 0 && - (RBIGNUM_SIGN(x) || (SIGNED_VALUE)num != LONG_MIN)) { + if ((long)num < 0 && + (RBIGNUM_SIGN(x) || (long)num != LONG_MIN)) { rb_raise(rb_eRangeError, "bignum too big to convert into `long'"); } - if (!RBIGNUM_SIGN(x)) return -(SIGNED_VALUE)num; + if (!RBIGNUM_SIGN(x)) return (VALUE)(-(long)num); return num; } -- Yusuke Endoh ---------------------------------------- http://redmine.ruby-lang.org/issues/show/3490 ---------------------------------------- http://redmine.ruby-lang.org