From b3fb872d9db31d752aeefdb62b7ea928b9cadc42 Mon Sep 17 00:00:00 2001 From: tenderlove Date: Mon, 22 Oct 2012 21:14:08 +0000 Subject: * ext/psych/lib/psych/visitors/to_ruby.rb: Handle nil tags specially to avoid slow method_missing calls. Thanks Kevin Menard! git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37289 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ ext/psych/lib/psych/visitors/to_ruby.rb | 12 +++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index c719942f9e..f39e0e9188 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Oct 23 06:12:39 2012 Aaron Patterson + + * ext/psych/lib/psych/visitors/to_ruby.rb: Handle nil tags specially + to avoid slow method_missing calls. Thanks Kevin Menard! + Tue Oct 23 06:07:57 2012 Aaron Patterson * ext/psych/lib/psych/scalar_scanner.rb: Ignore bad timestamps. If diff --git a/ext/psych/lib/psych/visitors/to_ruby.rb b/ext/psych/lib/psych/visitors/to_ruby.rb index 088301ac14..c6cf018888 100644 --- a/ext/psych/lib/psych/visitors/to_ruby.rb +++ b/ext/psych/lib/psych/visitors/to_ruby.rb @@ -118,6 +118,8 @@ module Psych end case o.tag + when nil + register_empty(o) when '!omap', 'tag:yaml.org,2002:omap' map = register(o, Psych::Omap.new) o.children.each { |a| @@ -130,9 +132,7 @@ module Psych o.children.each { |c| list.push accept c } list else - list = register(o, []) - o.children.each { |c| list.push accept c } - list + register_empty(o) end end @@ -252,6 +252,12 @@ module Psych object end + def register_empty object + list = register(object, []) + object.children.each { |c| list.push accept c } + list + end + def revive_hash hash, o @st[o.anchor] = hash if o.anchor -- cgit v1.2.3