Bug #6209
closedMarshal.load unable to load previously marshaled data: invalid encoding symbol (EncodingError)
Description
=begin
= Description
A ruby object (generated with the Classifier gem) is Marshalled on the disk.
When reloaded, the ruby interpreter crashes with the following error:
test-case.rb:8:in load': invalid encoding symbol (EncodingError) from test-case.rb:8:in
block in '
from test-case.rb:7:in open' from test-case.rb:7:in
'
The marshalled data has been generated using the classifier gem and the provided test-case and test-file
= Expected Behaviour
Ruby reloads the Marshalled data without error
= Step to reproduce
- Install the classifier gem.
- Ensure . does not contain classifier.data
- run (({ruby test-case.rb}))
- Check classifier.data exists
- run (({ruby test-case.rb}))
- the runtime crashed
=end
Files
Updated by nobu (Nobuyoshi Nakada) about 12 years ago
=begin
The minimal code would be:
Marshal.load(Marshal.dump("\xff".force_encoding("ascii-8bit").intern))
=end
Updated by nobu (Nobuyoshi Nakada) about 12 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r35157.
Pierre, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
- marshal.c (r_symreal): default to ASCII-8BIT for non-ascii symbols,
otherwise it should be converted to US-ASCII in rb_intern_str() if
possible. [ruby-core:43762][Bug #6209]
Updated by nobu (Nobuyoshi Nakada) about 12 years ago
Note that fast-stemmer doesn't seem to support 1.9 yet.
Updated by ninguno (ninguno ninguno) almost 12 years ago
I'm having this issue in ruby 1.9.2 p320. Is the bug resolved in any of the available releases?
Thanks in advance!