summaryrefslogtreecommitdiff
path: root/lib
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 /lib
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
Diffstat (limited to 'lib')
-rw-r--r--lib/psych/visitors/yaml_tree.rb2
1 files changed, 2 insertions, 0 deletions
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