diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-02-07 23:58:42 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-02-07 23:58:42 +0000 |
commit | f79876e194bb44a302a205ef5a91ad951a56e376 (patch) | |
tree | 88b2a603ee119cbe94f1c4abe4bdce9e0efcc2a4 /lib | |
parent | 1c836f811c7f7e2cd29e2bab68f0780e10bb0767 (diff) |
* 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.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39145 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r-- | lib/rubygems/package/old.rb | 16 |
1 files changed, 13 insertions, 3 deletions
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 |