Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Ruby (http://www.velocityreviews.com/forums/f66-ruby.html)
-   -   Big problem with debian ruby 1.8.0-1 (http://www.velocityreviews.com/forums/t811034-big-problem-with-debian-ruby-1-8-0-1-a.html)

Ferenc Engard 10-05-2003 10:05 PM

Big problem with debian ruby 1.8.0-1
 
Hello,

I have just upgraded ruby on my debian unstable to ruby 1.8.0-1
(2003-10-05), and my program has crashed. Here is the stripped down
version of my code:

----------------------------------------------------------------------
#!/usr/bin/ruby1.8

class Action < Proc
attr_accessor :name
def initialize
puts "Action#init"
@name='not defined'
super
end
end

class Actions
def initialize
@actions=Hash.new
end

#~ def register(name,action=nil)
def register(name,action=nil,&bl)
if action.nil? && block_given?
puts "Before Action.new"
action=Action.new(&bl)
#~ action=Action.new
puts "After Action.new"
end
puts action.inspect
action.name=name
@actions[name]=action
action
end
end

actions=Actions.new
actions.register('exit') {puts "yes"}
----------------------------------------------------------------------

This program now outputs the following:

fery@domesticus:~/work/tudomany/implementation$ ./gui_test.rb
Before Action.new
After Action.new
#<Proc:0x40276854@./gui_test.rb:32>
../gui_test.rb:25:in `register': undefined method `name=' for
#<Proc:0x40276854@./gui_test.rb:32> (NoMethodError)
from ./gui_test.rb:32
fery@domesticus:~/work/tudomany/implementation$


So, instead of Action, action is a Proc! :-O

Note, if I remove the &bl from the Actions#register(), then this code do
not show this behavior, although, there is not so much sense using a
Proc-derived class without a proc... :-((

What is the problem?

Thanks:
Ferenc

PS: The previous ruby version was also 1.8.0 (I do not remember the
exact date). :(

Yukihiro Matsumoto 10-06-2003 12:33 AM

Re: Big problem with debian ruby 1.8.0-1
 
Hi,

In message "Big problem with debian ruby 1.8.0-1"
on 03/10/06, Ferenc Engard <ferenc@engard.hu> writes:

|I have just upgraded ruby on my debian unstable to ruby 1.8.0-1
|(2003-10-05), and my program has crashed. Here is the stripped down
|version of my code:

A bug.

--- eval.c 5 Oct 2003 14:07:07 -0000 1.549
+++ eval.c 6 Oct 2003 00:33:39 -0000
@@ -6930,3 +6930,3 @@ proc_alloc(klass, proc)

- if (!proc && ruby_block->block_obj) {
+ if (!proc && ruby_block->block_obj && CLASS_OF(ruby_block->block_obj) == klass) {
return ruby_block->block_obj;



All times are GMT. The time now is 04:03 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.