summaryrefslogtreecommitdiff
path: root/lib/rubygems/package
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-02-07 23:58:42 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-02-07 23:58:42 +0000
commitf79876e194bb44a302a205ef5a91ad951a56e376 (patch)
tree88b2a603ee119cbe94f1c4abe4bdce9e0efcc2a4 /lib/rubygems/package
parent1c836f811c7f7e2cd29e2bab68f0780e10bb0767 (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/rubygems/package')
-rw-r--r--lib/rubygems/package/old.rb16
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