diff --git a/ChangeLog b/ChangeLog index 7300e10709..d331beaadc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Fri Feb 8 08:58:26 2013 Eric Hodel + + * lib/rubygems/package/old.rb: Fix loading old format gems on ruby + 1.8. This commit is only so trunk and rubygems master have the same + code. + Fri Feb 8 08:53:27 2013 Aaron Patterson * ext/psych/lib/psych/visitors/yaml_tree.rb: fixing string quotation diff --git a/lib/rubygems/package/old.rb b/lib/rubygems/package/old.rb index 6bf9ea0fe3..e0bdfbb3dc 100644 --- a/lib/rubygems/package/old.rb +++ b/lib/rubygems/package/old.rb @@ -142,9 +142,19 @@ class Gem::Package::Old < Gem::Package end end - @spec = Gem::Specification.from_yaml yaml - rescue YAML::SyntaxError => e - raise Gem::Exception, "Failed to parse gem specification out of gem file" + yaml_error = if RUBY_VERSION < '1.8' then + YAML::ParseError + elsif YAML::ENGINE.yamler == 'syck' then + YAML::ParseError + else + YAML::SyntaxError + end + + begin + @spec = Gem::Specification.from_yaml yaml + rescue yaml_error => e + raise Gem::Exception, "Failed to parse gem specification out of gem file" + end rescue ArgumentError => e raise Gem::Exception, "Failed to parse gem specification out of gem file" end