diff --git a/spec/core/marshal/dump_spec.rb b/spec/core/marshal/dump_spec.rb index dcf1719f31..f7ce367bf3 100644 --- a/spec/core/marshal/dump_spec.rb +++ b/spec/core/marshal/dump_spec.rb @@ -144,10 +144,8 @@ it "raises a TypeError if _dump returns a non-string" do m = mock("marshaled") - NATFIXME 'raises a TypeError if _dump returns a non-string', exception: SpecFailedException do - m.should_receive(:_dump).and_return(0) - -> { Marshal.dump(m) }.should raise_error(TypeError) - end + m.should_receive(:_dump).and_return(0) + -> { Marshal.dump(m) }.should raise_error(TypeError) end it "raises TypeError if an Object is an instance of an anonymous class" do diff --git a/src/marshal.rb b/src/marshal.rb index 528309898d..2d36e1f1b1 100644 --- a/src/marshal.rb +++ b/src/marshal.rb @@ -257,6 +257,7 @@ def write_user_marshaled_object_without_allocate(value) write_char('u') write(value.class.to_s.to_sym) dump = value.send(:_dump, -1) + raise TypeError, '_dump() must return string' unless dump.is_a?(String) write_integer_bytes(dump.size) write_bytes(value.send(:_dump, -1)) end