Skip to content

Commit

Permalink
* gc.c, parse.y, lib/cgi.rb, lib/date.rb: last minute backports from …
Browse files Browse the repository at this point in the history
…HEAD.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6628 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
matz committed Jul 14, 2004
1 parent 91c9ac2 commit 6e918be
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 17 deletions.
2 changes: 1 addition & 1 deletion gc.c
Expand Up @@ -1434,7 +1434,7 @@ Init_stack(addr)
STACK_LEVEL_MAX = (rlim.rlim_cur - space) / sizeof(VALUE);
}
}
#ifdef __ia64__
#if defined(__ia64__) && (!defined(__GNUC__) || __GNUC__ < 2 || defined(__OPTIMIZE__))
/* ruby crashes on IA64 if compiled with optimizer on */
/* when if STACK_LEVEL_MAX is greater than this magic number */
/* I know this is a kludge. I suspect optimizer bug */
Expand Down
15 changes: 8 additions & 7 deletions lib/cgi.rb
Expand Up @@ -1125,17 +1125,16 @@ def multipart?
@multipart
end

class Value < DelegateClass(String) # :nodoc:
def initialize(str, params)
module Value # :nodoc:
def set_params(params)
@params = params
super(str)
end
def [](idx, *args)
if args.size == 0
warn "#{caller(1)[0]}:CAUTION! cgi['key'] == cgi.params['key'][0]; if want Array, use cgi.params['key']"
self
@params[idx]
else
self.to_s[idx,*args]
super[idx,*args]
end
end
def first
Expand Down Expand Up @@ -1165,7 +1164,10 @@ def [](key)
Tempfile.new("CGI")
end
else
Value.new(value || "", params)
str = if value then value.dup else "" end
str.extend(Value)
str.set_params(params)
str
end
end

Expand Down Expand Up @@ -2310,4 +2312,3 @@ def initialize(type = "query")
end

end # class CGI

6 changes: 3 additions & 3 deletions lib/cgi/session.rb
Expand Up @@ -210,7 +210,7 @@ def Session::create_new_id
#
# session_expires:: the time the current session expires, as a
# +Time+ object. If not set, the session will terminate
# when the user's browser is closed.
# when the user's browser is closed.
# session_domain:: the hostname domain for which this session is valid.
# If not set, defaults to the hostname of the server.
# session_secure:: if +true+, this session will only work over HTTPS.
Expand Down Expand Up @@ -365,7 +365,6 @@ def initialize(session, option={})
raise ArgumentError, "session_id `%s' is invalid" % id
end
@path = dir+"/"+prefix+id
@path.untaint
unless File::exist? @path
@hash = {}
end
Expand Down Expand Up @@ -413,7 +412,8 @@ def close

# Close and delete the session's FileStore file.
def delete
File::unlink @path
File::unlink @path
rescue Errno::ENOENT
end
end

Expand Down
8 changes: 7 additions & 1 deletion lib/date.rb
Expand Up @@ -711,7 +711,13 @@ def once(*ids) # :nodoc:
alias_method :__#{id.to_i}__, :#{id.to_s}
private :__#{id.to_i}__
def #{id.to_s}(*args, &block)
(@__#{id.to_i}__ ||= [__#{id.to_i}__(*args, &block)])[0]
if @__#{id.to_i}__
@__#{id.to_i}__
elsif ! self.frozen?
@__#{id.to_i}__ ||= __#{id.to_i}__(*args, &block)
else
__#{id.to_i}__(*args, &block)
end
end
end;
end
Expand Down
9 changes: 4 additions & 5 deletions parse.y
Expand Up @@ -5266,11 +5266,10 @@ static NODE*
cond0(node)
NODE *node;
{
enum node_type type = nd_type(node);

if (node == 0) return 0;
assign_in_cond(node);

switch (type) {
switch (nd_type(node)) {
case NODE_DSTR:
case NODE_EVSTR:
case NODE_STR:
Expand All @@ -5294,8 +5293,8 @@ cond0(node)
case NODE_DOT3:
node->nd_beg = range_op(node->nd_beg);
node->nd_end = range_op(node->nd_end);
if (type == NODE_DOT2) nd_set_type(node,NODE_FLIP2);
else if (type == NODE_DOT3) nd_set_type(node, NODE_FLIP3);
if (nd_type(node) == NODE_DOT2) nd_set_type(node,NODE_FLIP2);
else if (nd_type(node) == NODE_DOT3) nd_set_type(node, NODE_FLIP3);
node->nd_cnt = local_append(internal_id());
if (!e_option_supplied()) {
int b = literal_node(node->nd_beg);
Expand Down

0 comments on commit 6e918be

Please sign in to comment.