ruby-changes:24253
From: xibbar <ko1@a...>
Date: Wed, 4 Jul 2012 13:42:41 +0900 (JST)
Subject: [ruby-changes:24253] xibbar:r36304 (trunk): * lib/cgi/core.rb: fix bug: When query parameter is 'id=123&id',
xibbar 2012-07-04 13:42:32 +0900 (Wed, 04 Jul 2012) New Revision: 36304 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=36304 Log: * lib/cgi/core.rb: fix bug: When query parameter is 'id=123&id', cgi['id'] => '123' is correct. First parameter is valid. [Feature #6621] Modified files: trunk/lib/cgi/core.rb trunk/test/cgi/test_cgi_core.rb Index: lib/cgi/core.rb =================================================================== --- lib/cgi/core.rb (revision 36303) +++ lib/cgi/core.rb (revision 36304) @@ -367,12 +367,13 @@ 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 Index: test/cgi/test_cgi_core.rb =================================================================== --- test/cgi/test_cgi_core.rb (revision 36303) +++ test/cgi/test_cgi_core.rb (revision 36304) @@ -38,7 +38,7 @@ def test_cgi_core_params_GET @environ = { 'REQUEST_METHOD' => 'GET', - 'QUERY_STRING' => 'id=123&id=456&id=&str=%40h+%3D%7E+%2F%5E%24%2F', + 'QUERY_STRING' => 'id=123&id=456&id=&id&str=%40h+%3D%7E+%2F%5E%24%2F', 'HTTP_COOKIE' => '_session_id=12345; name1=val1&val2;', 'SERVER_SOFTWARE' => 'Apache 2.2.0', 'SERVER_PROTOCOL' => 'HTTP/1.1', -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/