diff options
author | tenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-01-28 17:37:09 +0000 |
---|---|---|
committer | tenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-01-28 17:37:09 +0000 |
commit | 6ce27adabe13baefb974fd7ea4d1ff0becd60134 (patch) | |
tree | 6b3d1172c7548bddd9034f341cac3eaa0581a14e | |
parent | 8914d672b814c16259ff49c43f12af32c7528e4a (diff) |
* ext/psych/lib/psych/visitors/to_ruby.rb: fix parsing hashes with
instance variables when it is referenced multiple times.
* ext/psych/lib/psych.rb: bump version
* ext/psych/psych.gemspec: bump version
* test/psych/test_hash.rb: test for fix
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49432 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | ext/psych/lib/psych.rb | 2 | ||||
-rw-r--r-- | ext/psych/lib/psych/visitors/to_ruby.rb | 1 | ||||
-rw-r--r-- | ext/psych/psych.gemspec | 2 | ||||
-rw-r--r-- | test/psych/test_hash.rb | 7 |
5 files changed, 18 insertions, 2 deletions
@@ -1,3 +1,11 @@ +Thu Jan 29 02:34:27 2015 Aaron Patterson <aaron@tenderlovemaking.com> + + * ext/psych/lib/psych/visitors/to_ruby.rb: fix parsing hashes with + instance variables when it is referenced multiple times. + * ext/psych/lib/psych.rb: bump version + * ext/psych/psych.gemspec: bump version + * test/psych/test_hash.rb: test for fix + Thu Jan 29 02:06:09 2015 Eric Wong <e@80x24.org> * thread.c (struct join_arg): restructure and make smaller diff --git a/ext/psych/lib/psych.rb b/ext/psych/lib/psych.rb index 87171d19d5..3e9b7aa1fb 100644 --- a/ext/psych/lib/psych.rb +++ b/ext/psych/lib/psych.rb @@ -217,7 +217,7 @@ require 'psych/class_loader' module Psych # The version is Psych you're using - VERSION = '2.0.10' + VERSION = '2.0.12' # The version of libyaml Psych is using LIBYAML_VERSION = Psych.libyaml_version.join '.' diff --git a/ext/psych/lib/psych/visitors/to_ruby.rb b/ext/psych/lib/psych/visitors/to_ruby.rb index f353e9c301..5bd33b4d7d 100644 --- a/ext/psych/lib/psych/visitors/to_ruby.rb +++ b/ext/psych/lib/psych/visitors/to_ruby.rb @@ -263,6 +263,7 @@ module Psych when /^!ruby\/hash-with-ivars(?::(.*))?$/ hash = $1 ? resolve_class($1).allocate : {} + register o, hash o.children.each_slice(2) do |key, value| case key.value when 'elements' diff --git a/ext/psych/psych.gemspec b/ext/psych/psych.gemspec index a8f16300d2..40b0e2ed5d 100644 --- a/ext/psych/psych.gemspec +++ b/ext/psych/psych.gemspec @@ -2,7 +2,7 @@ Gem::Specification.new do |s| s.name = "psych" - s.version = "2.0.10" + s.version = "2.0.12" s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= s.require_paths = ["lib"] diff --git a/test/psych/test_hash.rb b/test/psych/test_hash.rb index e658984f48..e2a312901a 100644 --- a/test/psych/test_hash.rb +++ b/test/psych/test_hash.rb @@ -23,6 +23,13 @@ module Psych @hash = { :a => 'b' } end + def test_referenced_hash_with_ivar + a = [1,2,3,4,5] + t1 = [HashWithCustomInit.new(a)] + t1 << t1.first + assert_cycle t1 + end + def test_custom_initialized a = [1,2,3,4,5] t1 = HashWithCustomInit.new(a) |