summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2012-05-15 09:25:23 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2012-05-15 09:25:23 -0700
commit1606060069c13b2bcdc672a1a0e89202a9eb5166 (patch)
tree67d96403bd6a8fb3545fe6674498c61ebfbf8872
parent9316aa38859492b06f4339336184fd303a033530 (diff)
downloadpsych-1606060069c13b2bcdc672a1a0e89202a9eb5166.zip
* ext/psych/lib/psych/visitors/yaml_tree.rb: keep a reference to
custom coders so that GC does not impact dumped yaml reference ids. Fixes #60
-rw-r--r--CHANGELOG.rdoc5
-rw-r--r--lib/psych/visitors/yaml_tree.rb2
2 files changed, 7 insertions, 0 deletions
diff --git a/CHANGELOG.rdoc b/CHANGELOG.rdoc
index ea6c92d..9154a8e 100644
--- a/CHANGELOG.rdoc
+++ b/CHANGELOG.rdoc
@@ -1,3 +1,8 @@
+Wed May 16 01:15:45 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: keep a reference to
+ custom coders so that GC does not impact dumped yaml reference ids.
+
Mon Apr 30 04:43:53 2012 Aaron Patterson <aaron@tenderlovemaking.com>
* ext/psych/lib/psych/json/yaml_events.rb: implicit styles should not
diff --git a/lib/psych/visitors/yaml_tree.rb b/lib/psych/visitors/yaml_tree.rb
index 80af046..646fed7 100644
--- a/lib/psych/visitors/yaml_tree.rb
+++ b/lib/psych/visitors/yaml_tree.rb
@@ -20,6 +20,7 @@ module Psych
@st = {}
@ss = ss
@options = options
+ @coders = []
@dispatch_cache = Hash.new do |h,klass|
method = "visit_#{(klass.name || '').split('::').join('_')}"
@@ -406,6 +407,7 @@ module Psych
end
def dump_coder o
+ @coders << o
tag = Psych.dump_tags[o.class]
unless tag
klass = o.class == Object ? nil : o.class.name