mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* gc.c, parse.y, lib/cgi.rb, lib/date.rb: last minute backports from HEAD.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6628 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									91c9ac216a
								
							
						
					
					
						commit
						6e918be6b1
					
				
					 5 changed files with 23 additions and 17 deletions
				
			
		
							
								
								
									
										2
									
								
								gc.c
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								gc.c
									
										
									
									
									
								
							|  | @ -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 */ | ||||
|  |  | |||
							
								
								
									
										15
									
								
								lib/cgi.rb
									
										
									
									
									
								
							
							
						
						
									
										15
									
								
								lib/cgi.rb
									
										
									
									
									
								
							|  | @ -1125,17 +1125,16 @@ class CGI | |||
|       @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 | ||||
|  | @ -1165,7 +1164,10 @@ class CGI | |||
|           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 | ||||
| 
 | ||||
|  | @ -2310,4 +2312,3 @@ class CGI | |||
|   end | ||||
| 
 | ||||
| end   # class CGI | ||||
| 
 | ||||
|  |  | |||
|  | @ -365,7 +365,6 @@ class CGI | |||
| 	  raise ArgumentError, "session_id `%s' is invalid" % id | ||||
| 	end | ||||
| 	@path = dir+"/"+prefix+id | ||||
| 	@path.untaint | ||||
| 	unless File::exist? @path | ||||
| 	  @hash = {} | ||||
| 	end | ||||
|  | @ -414,6 +413,7 @@ class CGI | |||
|       # Close and delete the session's FileStore file. | ||||
|       def delete | ||||
|         File::unlink @path | ||||
|       rescue Errno::ENOENT | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|  |  | |||
|  | @ -711,7 +711,13 @@ class Date | |||
| 	  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 | ||||
|  |  | |||
							
								
								
									
										9
									
								
								parse.y
									
										
									
									
									
								
							
							
						
						
									
										9
									
								
								parse.y
									
										
									
									
									
								
							|  | @ -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: | ||||
|  | @ -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); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 matz
						matz