summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-01-28 17:37:09 +0000
committertenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-01-28 17:37:09 +0000
commit6ce27adabe13baefb974fd7ea4d1ff0becd60134 (patch)
tree6b3d1172c7548bddd9034f341cac3eaa0581a14e
parent8914d672b814c16259ff49c43f12af32c7528e4a (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--ChangeLog8
-rw-r--r--ext/psych/lib/psych.rb2
-rw-r--r--ext/psych/lib/psych/visitors/to_ruby.rb1
-rw-r--r--ext/psych/psych.gemspec2
-rw-r--r--test/psych/test_hash.rb7
5 files changed, 18 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 33b2b14..85070bc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 87171d1..3e9b7aa 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 f353e9c..5bd33b4 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 a8f1630..40b0e2e 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 e658984..e2a3129 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)