summaryrefslogtreecommitdiff
path: root/lib/cgi
diff options
context:
space:
mode:
authorxibbar <xibbar@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-07-04 04:42:32 +0000
committerxibbar <xibbar@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-07-04 04:42:32 +0000
commit9c746e35ad3c265704710934e9dc44b1ff7f741a (patch)
tree7c5a51f4b5c28b1c4783d4981921b677c367adc6 /lib/cgi
parent38ca5cca0095d1a00a280009ab49772ce8749e91 (diff)
Wed Jul 4 08:45:41 2012 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
* lib/cgi/core.rb: fix bug: When query parameter is 'id=123&id', cgi['id'] => '123' is correct. First parameter is valid. [Feature #6621] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36304 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/cgi')
-rw-r--r--lib/cgi/core.rb11
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/cgi/core.rb b/lib/cgi/core.rb
index 376ad01130..5b01866e8e 100644
--- a/lib/cgi/core.rb
+++ b/lib/cgi/core.rb
@@ -367,12 +367,13 @@ class CGI
params = {}
query.split(/[&;]/).each do |pairs|
key, value = pairs.split('=',2).collect{|v| CGI::unescape(v) }
- if key && value
- params.has_key?(key) ? params[key].push(value) : params[key] = [value]
- elsif key
- params[key]=[]
- end
+
+ next unless key
+
+ params[key] ||= []
+ params[key].push(value) if value
end
+
params.default=[].freeze
params
end