[ruby-core:77386] [Ruby trunk Bug#12787] Stackoverflow over when alias_method and prepend are used in combination
From:
ethirajsrinivasan@...
Date:
2016-09-24 18:47:42 UTC
List:
ruby-core #77386
Issue #12787 has been reported by ethiraj srinivasan.
----------------------------------------
Bug #12787: Stackoverflow over when alias_method and prepend are used in combination
https://bugs.ruby-lang.org/issues/12787
* Author: ethiraj srinivasan
* Status: Open
* Priority: Normal
* Assignee:
* ruby -v:
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
With Ruby 2.0 Module#prepend was used to overcome the drawbacks of alias_method_chaining. Most of the gems/projects still use alias_method_chain since they support 1.9.3 and with upcoming gems/projects using prepend for the method that is already aliased throws stackoverflow error since the aliased method and prepend method call each other and results in deadlock.
~~~ ruby
class Netter
def requester
puts " I am requester in Netter"
end
end
class Netter
def requester_with_alias
puts "i am in alias"
requester_without_alias
end
alias_method :requester_without_alias, :requester
alias_method :requester, :requester_with_alias
end
module Prepender
def requester
puts "i am in prepend"
super
end
end
Netter.prepend(Prepender)
Netter.new.requester
~~~
---Files--------------------------------
stackoverflow_with_alias_and_prepend (404 Bytes)
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>