Project

General

Profile

Actions

Bug #5473

closed

Raise in method_missing causes infinite loop

Added by calamitas (Peter Vanbroekhoven) almost 11 years ago. Updated over 10 years ago.

Status:
Closed
Priority:
Normal
Target version:
-
ruby -v:
ruby 1.9.3dev (2011-10-11 revision 33457) [i386-darwin9.8.0]
Backport:
[ruby-core:40287]

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) over 10 years ago

  • Status changed from Open to Assigned
  • Assignee set to ko1 (Koichi Sasada)
Actions #2

Updated by nobu (Nobuyoshi Nakada) over 10 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.


Actions

Also available in: Atom PDF