From 41198ad3ad1925b2b88df9b16638c36dee43500f Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Fri, 12 Jan 2007 09:10:58 +0000 Subject: Fix parsing of array[] CGI parameters so extra empty values aren't included. Closes #6252. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5904 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/lib/action_controller/cgi_ext/cgi_methods.rb | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'actionpack/lib/action_controller/cgi_ext') diff --git a/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb b/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb index 329a11969a..437a340b25 100755 --- a/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb +++ b/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb @@ -23,18 +23,19 @@ class CGIMethods #:nodoc: def parse_request_parameters(params) parser = FormEncodedPairParser.new - finished = false - until finished - finished = true + params = params.dup + until params.empty? for key, value in params - next if key.blank? - if !key.include?('[') + if key.blank? + params.delete key + elsif !key.include?('[') # much faster to test for the most common case first (GET) # and avoid the call to build_deep_hash parser.result[key] = get_typed_value(value[0]) + params.delete key elsif value.is_a?(Array) parser.parse(key, get_typed_value(value.shift)) - finished = false unless value.empty? + params.delete key if value.empty? else raise TypeError, "Expected array, found #{value.inspect}" end -- cgit v1.2.3