[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]