From 68470bef862f14501ff0d8a3a6ac78ea38ab383b Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 11 Aug 2017 09:21:09 +0900 Subject: Check method existence in `to_enum'; ref #3773 --- mrbgems/mruby-enum-lazy/mrblib/lazy.rb | 3 +++ mrbgems/mruby-enumerator/mrblib/enumerator.rb | 3 +++ 2 files changed, 6 insertions(+) diff --git a/mrbgems/mruby-enum-lazy/mrblib/lazy.rb b/mrbgems/mruby-enum-lazy/mrblib/lazy.rb index 8a7ac7fdc..c98681edf 100644 --- a/mrbgems/mruby-enum-lazy/mrblib/lazy.rb +++ b/mrbgems/mruby-enum-lazy/mrblib/lazy.rb @@ -43,6 +43,9 @@ class Enumerator end def to_enum(meth=:each, *args, &block) + unless self.respond_to?(meth) + raise NoMethodError, "undefined method #{meth}" + end lz = Lazy.new(self, &block) lz.obj = self lz.meth = meth diff --git a/mrbgems/mruby-enumerator/mrblib/enumerator.rb b/mrbgems/mruby-enumerator/mrblib/enumerator.rb index c872ceedc..1e77af369 100644 --- a/mrbgems/mruby-enumerator/mrblib/enumerator.rb +++ b/mrbgems/mruby-enumerator/mrblib/enumerator.rb @@ -115,6 +115,9 @@ class Enumerator else raise ArgumentError unless obj end + if @obj and !self.respond_to?(meth) + raise NoMethodError, "undefined method #{meth}" + end @obj = obj @meth = meth -- cgit v1.2.3