Bug in the YAML library: #dump fails for certain multi-line strings

Hey guys,

I stumbled across what is a bug in the YAML library. It does not
properly encode certain multi-line strings. Fire up irb, and try the
following:

require ‘yaml’
=> true

s3 = “\n Do I work?\nNo indent”
=> “\n Do I work?\nNo indent”

YAML.load(YAML.dump(s3))
ArgumentError: syntax error on line 3, col 0: No indent' from /opt/ruby-enterprise-1.8.6-20080810/lib/ruby/1.8/yaml.rb:133:inload’
from /opt/ruby-enterprise-1.8.6-20080810/lib/ruby/1.8/yaml.rb:133:in
`load’
from (irb):3

I’ve confirmed it’s broken in both 1.8.6.p111, and REE 1.8.6.p287.

I wrote up a pretty thorough exploration of this bug in a blog post
describing the problem and offering a (sub-optimal) patch:

Is this the right list to discuss this?

-John

Just upping this because I think it’s particularly important. Is
there a better venue to discuss this? Just curious where the
interested parties (read: the ruby YAML library maintainers) are…

-John

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs