Actions
Bug #5473
closedRaise in method_missing causes infinite loop
Description
=begin
The following code causes an infinite loop:
class ::Object
def method_missing(m, *a, &b)
raise ArgumentError.new("haha")
end
end
1.foo
This is due to the raise calling (({to_str})) on the exception, which isn't defined. So a (({method_missing})) that also covers the (({Exception})) class and that contains a (({raise})) (at least the version with one argument) causes an infinite loop.
I'm a bit hesitant to call this a bug, except that the pattern above happened in code that works on Ruby 1.8 and breaks on 1.9.
=end
Updated by ko1 (Koichi Sasada) almost 13 years ago
- Status changed from Open to Assigned
- Assignee set to ko1 (Koichi Sasada)
Updated by nobu (Nobuyoshi Nakada) almost 13 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r34983.
Peter, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
- vm_method.c (Init_eval_method): copy basic methods to Exception.
[ruby-core:40287][Bug #5473]
Actions
Like0
Like0Like0