From: Yui NARUSE Date: 2010-09-10T16:20:47+09:00 Subject: [ruby-dev:42225] [Ruby 1.9-Bug#3816][Assigned] OpenSSL::BN#prime?の引数の取り扱いがおかしい Bug #3816: OpenSSL::BN#prime?の引数の取り扱いがおかしい http://redmine.ruby-lang.org/issues/show/3816 起票者: Yui NARUSE ステータス: Assigned, 優先度: Normal 担当者: Hiroshi NAKAMURA ruby -v: ruby 1.9.3dev (2010-09-10 trunk 29213) [x86_64-freebsd8.1] OpenSSL::BN#prime?を引数なしで呼ぶと以下の通り例外が出ます。 irb(main):001:0> require'openssl'=> trueirb(main):002:0> OpenSSL::BN.new("461166461445805738999").prime? TypeError: no implicit conversion from nil to integer from (irb):2:in `prime?' from (irb):2 from /home/naruse/local/ruby_1_9_2/bin/irb:12:in `
' コードを見るに、rb_scan_args の引数との比較が誤っているように見えるので、引数ありでもおかしいでしょう。 以下の変更で直ります。 diff --git a/ext/openssl/ossl_bn.c b/ext/openssl/ossl_bn.c index bec5135..6adc59f 100644 --- a/ext/openssl/ossl_bn.c +++ b/ext/openssl/ossl_bn.c @@ -669,7 +669,7 @@ ossl_bn_is_prime(int argc, VALUE *argv, VALUE self) VALUE vchecks; int checks = BN_prime_checks; - if (rb_scan_args(argc, argv, "01", &vchecks) == 0) { + if (rb_scan_args(argc, argv, "01", &vchecks) == 1) { checks = NUM2INT(vchecks); } GetBN(self, bn); ---------------------------------------- http://redmine.ruby-lang.org