Issue #7564 has been updated by zenspider (Ryan Davis).


I'm getting bit by this in my multi-version CI on Flay and any other project that uses the sexp gem and calls my deep_clone:

  def deep_clone
    Marshal.load(Marshal.dump(self))
  end

----------------------------------------
Bug #7564: r38175 introduces incompatibility
https://bugs.ruby-lang.org/issues/7564#change-34837

Author: tenderlovemaking (Aaron Patterson)
Status: Open
Priority: Normal
Assignee: mame (Yusuke Endoh)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-12-15 trunk 38381) [x86_64-darwin12.2.1]


r38175 introduces incompatibility with 1.9.3.  Before r38175, when looking for _dump, Marshal would not call method_missing.  Now marshal calls method_missing when trying to dump.

The following example exits with no error on 1.9.3, but on trunk it raises an exception (_dump() must return string (TypeError)):

class TR
  def initialize calls = []
    @calls = calls
  end

  def method_missing name, *args
    @calls << [name, args]
  end
end

Marshal.dump TR.new

I've attached a test case.


-- 
http://bugs.ruby-lang.org/