Project

General

Profile

Actions

Bug #5473

closed

Raise in method_missing causes infinite loop

Added by calamitas (Peter Vanbroekhoven) about 13 years ago. Updated over 12 years ago.

Status:
Closed
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 12 years ago

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

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

Like0
Like0Like0