From: Young Hyun Date: 2009-06-18T09:24:39+09:00 Subject: [ruby-core:23907] [Bug #1649] use of #send in MonitorMixin::extend_object fails for BasicSocket objects Bug #1649: use of #send in MonitorMixin::extend_object fails for BasicSocket objects http://redmine.ruby-lang.org/issues/show/1649 Author: Young Hyun Status: Open, Priority: Normal Category: lib, Target version: 1.9.1 ruby -v: ruby 1.9.1p129 (2009-05-12 revision 23412) [i386-freebsd6.1] MonitorMixin::extend_object executes obj.send(:mon_initialize) with the intention of invoking Object#send. However, this code fails when used on BasicSocket (and descendants), which has an unrelated #send. MonitorMixin::extend_object should use __send__ or revert back to the old code: obj.instance_eval {mon_initialize()}. Reproduce with: >> require 'socket' => true >> sock_pair = UNIXSocket.pair Socket::SOCK_STREAM, 0 => [#, #] >> require 'monitor' => true >> sock_pair[1].extend MonitorMixin ArgumentError: wrong number of arguments (1 for 2) from /foo/ruby-1.9.1-p129/lib/ruby/1.9.1/monitor.rb:140:in `send' from /foo/ruby-1.9.1-p129/lib/ruby/1.9.1/monitor.rb:140:in `extend_object' from (irb):7:in `extend' from (irb):7 from /foo/ruby-1.9.1-p129/bin/irb:12:in `
' ---------------------------------------- http://redmine.ruby-lang.org