From: "mrkn (Kenta Murata)" <muraken@...> Date: 2012-11-14T11:14:44+09:00 Subject: [ruby-core:49327] [ruby-trunk - Bug #7348] marshaling an object by a float does not work Issue #7348 has been updated by mrkn (Kenta Murata). irb(main):006:0> e = Object.new irb(main):007:0> Marshal.load(Marshal.dump([[2.0e-100, e], [e]])) => [[2.0e-100, #<Object:0x007fa45a10bc28>], [#<Object:0x007fa45a10bc28>]] Therefore it is related to flonum. ---------------------------------------- Bug #7348: marshaling an object by a float does not work https://bugs.ruby-lang.org/issues/7348#change-32885 Author: tenderlovemaking (Aaron Patterson) Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: ruby 2.0.0dev (2012-11-14 trunk 37650) [x86_64-darwin12.2.1] The below `calls` object doesn't round trip through marshal on edge ruby: def test_marshal_object_and_float e = Object.new calls = [] calls << [2.0, e] calls << [e] assert_equal calls, Marshal.load(Marshal.dump(calls)) end When I run this test case, for some reason, the float takes the place of the object in the second array: [36/82] TestMarshal#test_marshal_object_and_float = 0.00 s 1) Failure: test_marshal_object_and_float(TestMarshal) [/Users/aaron/git/ruby/test/ruby/test_marshal.rb:40]: <[[2.0, #<Object:0x007fa5c20b08a0>], [#<Object:0x007fa5c20b08a0>]]> expected but was <[[2.0, #<Object:0x007fa5c20b05a8>], [2.0]]>. I've attached a failing test case. -- http://bugs.ruby-lang.org/