From: "NARUSE, Yui" Date: 2008-05-01T01:30:15+09:00 Subject: [ruby-dev:34551] xmlrpc and 64bit systems 成瀬です。 xmlrpc には 32bit 以上の整数を持てないようにする設定があります。 config.rb # allows integers greater than 32-bit if true ENABLE_BIGINT = false しかし、該当部分のコードが以下のようになっているので、 64bit 環境では期待通りに動作しません。 when Fixnum @writer.tag("i4", param.to_s) when Bignum if Config::ENABLE_BIGINT @writer.tag("i4", param.to_s) else if param >= -(2**31) and param <= (2**31-1) @writer.tag("i4", param.to_s) else raise "Bignum is too big! Must be signed 32-bit integer!" end end この設定を文字通り「32bit 以上でエラー」ととらえるならば、 これは以下のパッチで治ります。 --- lib/xmlrpc/create.rb (revision 16245) +++ lib/xmlrpc/create.rb (working copy) @@ -178,10 +178,7 @@ module XMLRPC def conv2value(param) val = case param - when Fixnum - @writer.tag("i4", param.to_s) - - when Bignum + when Fixnum, Bignum if Config::ENABLE_BIGINT @writer.tag("i4", param.to_s) else - 「32bit 以上」でなく、Fixnum を超える場合と考えると変わってきますが。 -- NARUSE, Yui