summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--lib/cgi.rb17
2 files changed, 16 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index dc916c1a80..d53da7704a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,11 @@ Fri Mar 14 16:59:23 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in (RUBY_LIB_PREFIX): fix for prefix.
+Fri Mar 14 16:35:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::Cookie::initialize): performance patch from
+ Makoto Kuwata <kwa@kuwata-lab.com> in [ruby-dev:34048].
+
Fri Mar 14 15:49:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in (RUBY_LIB_PREFIX): use libdir.
diff --git a/lib/cgi.rb b/lib/cgi.rb
index 7997a58f4c..538b33380d 100644
--- a/lib/cgi.rb
+++ b/lib/cgi.rb
@@ -802,11 +802,16 @@ class CGI
#
# These keywords correspond to attributes of the cookie object.
def initialize(name = "", *value)
- options = if name.kind_of?(String)
- { "name" => name, "value" => value }
- else
- name
- end
+ if name.kind_of?(String)
+ @name = name
+ @value = value
+ %r|^(.*/)|.match(ENV["SCRIPT_NAME"])
+ @path = ($1 or "")
+ @secure = false
+ return super(@value)
+ end
+
+ options = name
unless options.has_key?("name")
raise ArgumentError, "`name' required"
end
@@ -890,7 +895,7 @@ class CGI
if cookies.has_key?(name)
values = cookies[name].value + values
end
- cookies[name] = Cookie::new({ "name" => name, "value" => values })
+ cookies[name] = Cookie::new(name, *values)
end
cookies