ruby-changes:25416
From: naruse <ko1@a...>
Date: Mon, 5 Nov 2012 11:34:34 +0900 (JST)
Subject: [ruby-changes:25416] naruse:r37473 (trunk): * lib/cgi/core.rb: check if Tempfile is defined before use it.
naruse 2012-11-05 11:34:17 +0900 (Mon, 05 Nov 2012) New Revision: 37473 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=37473 Log: * lib/cgi/core.rb: check if Tempfile is defined before use it. * lib/cgi/core.rb: remove tempfiles only if tempfiles exist Modified files: trunk/ChangeLog trunk/lib/cgi/core.rb trunk/test/cgi/test_cgi_multipart.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 37472) +++ ChangeLog (revision 37473) @@ -1,3 +1,9 @@ +Mon Nov 5 10:57:59 2012 NARUSE, Yui <naruse@r...> + + * lib/cgi/core.rb: check if Tempfile is defined before use it. + + * lib/cgi/core.rb: remove tempfiles only if tempfiles exist + Mon Nov 5 12:17:00 2012 Zachary Scott <zachary@z...> * lib/uri/http.rb (URI::HTTP.build): Fix example @@ -4,6 +10,10 @@ Patch by Carina C. Zona [Fixes #209 Github] +Mon Nov 5 09:55:05 2012 Takeyuki FUJIOKA <xibbar@r...> + + * lib/cgi/core.rb: remove tempfile more early. + Sun Nov 4 20:29:46 2012 Takeyuki FUJIOKA <xibbar@r...> * lib/cgi.rb, lib/cgi/*/rb: rename CGI#header to CGI#http_header, Index: lib/cgi/core.rb =================================================================== --- lib/cgi/core.rb (revision 37472) +++ lib/cgi/core.rb (revision 37473) @@ -484,7 +484,7 @@ (n += 1) < max_count or raise StandardError.new("too many parameters.") ## create body (StringIO or Tempfile) body = create_body(bufsize < content_length) - tempfiles << body if body.kind_of? Tempfile + tempfiles << body if defined?(Tempfile) && body.kind_of?(Tempfile) class << body if method_defined?(:path) alias local_path path @@ -542,7 +542,7 @@ name = $1 || $2 || '' if body.original_filename.empty? value=body.read.dup.force_encoding(@accept_charset) - body.unlink if body.kind_of? Tempfile + body.unlink if defined?(Tempfile) && body.kind_of?(Tempfile) (params[name] ||= []) << value unless value.valid_encoding? if @accept_charset_error_block @@ -567,7 +567,7 @@ params.default = [] params ensure - if $! + if $! && tempfiles tempfiles.each {|t| if t.path t.unlink Index: test/cgi/test_cgi_multipart.rb =================================================================== --- test/cgi/test_cgi_multipart.rb (revision 37472) +++ test/cgi/test_cgi_multipart.rb (revision 37473) @@ -2,6 +2,7 @@ require 'cgi' require 'tempfile' require 'stringio' +require_relative '../ruby/envutil' ## @@ -332,6 +333,34 @@ cgi['file'].unlink if cgi['file'].kind_of? Tempfile end + def test_cgi_multipart_without_tempfile + assert_in_out_err([], <<-'EOM') + require 'cgi' + require 'stringio' + ENV['REQUEST_METHOD'] = 'POST' + ENV['CONTENT_TYPE'] = 'multipart/form-data; boundary=foobar1234' + body = <<-BODY +--foobar1234 +Content-Disposition: form-data: name=\"name1\" + +value1 +--foobar1234 +Content-Disposition: form-data: name=\"file1\"; filename=\"file1.html\" +Content-Type: text/html + +<html> +<body><p>Hello</p></body> +</html> + +--foobar1234-- +BODY + body.gsub!(/\n/, "\r\n") + ENV['CONTENT_LENGTH'] = body.size.to_s + $stdin = StringIO.new(body) + CGI.new + EOM + end + ### self.instance_methods.each do |method| -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/