mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	string.c: clear env self in symbol proc
* string.c (sym_to_proc), proc.c (rb_block_clear_env_self): clear caller's self which is useless, so that it can get collected. [Fixes GH-592] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45576 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									be711df831
								
							
						
					
					
						commit
						2f3b28c682
					
				
					 4 changed files with 19 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -1,3 +1,9 @@
 | 
			
		|||
Sat Apr 12 22:11:10 2014  Nobuyoshi Nakada  <nobu@ruby-lang.org>
 | 
			
		||||
 | 
			
		||||
	* string.c (sym_to_proc), proc.c (rb_block_clear_env_self): clear
 | 
			
		||||
	  caller's self which is useless, so that it can get collected.
 | 
			
		||||
	  [Fixes GH-592]
 | 
			
		||||
 | 
			
		||||
Sat Apr 12 09:26:48 2014  Eric Hodel  <drbrain@segment7.net>
 | 
			
		||||
 | 
			
		||||
	* ext/openssl/ossl_ocsp.c:  [DOC] Document OpenSSL::OCSP.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -758,6 +758,7 @@ ID rb_id_attrget(ID id);
 | 
			
		|||
VALUE rb_proc_location(VALUE self);
 | 
			
		||||
st_index_t rb_hash_proc(st_index_t hash, VALUE proc);
 | 
			
		||||
int rb_block_arity(void);
 | 
			
		||||
VALUE rb_block_clear_env_self(VALUE proc);
 | 
			
		||||
 | 
			
		||||
/* process.c */
 | 
			
		||||
#define RB_MAX_GROUPS (65536)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										11
									
								
								proc.c
									
										
									
									
									
								
							
							
						
						
									
										11
									
								
								proc.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -709,6 +709,17 @@ rb_block_lambda(void)
 | 
			
		|||
    return proc_new(rb_cProc, TRUE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
VALUE
 | 
			
		||||
rb_block_clear_env_self(VALUE proc)
 | 
			
		||||
{
 | 
			
		||||
    rb_proc_t *po;
 | 
			
		||||
    rb_env_t *env;
 | 
			
		||||
    GetProcPtr(proc, po);
 | 
			
		||||
    GetEnvPtr(po->envval, env);
 | 
			
		||||
    env->env[0] = Qnil;
 | 
			
		||||
    return proc;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
VALUE
 | 
			
		||||
rb_f_lambda(void)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								string.c
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								string.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -8506,6 +8506,7 @@ sym_to_proc(VALUE sym)
 | 
			
		|||
    }
 | 
			
		||||
    else {
 | 
			
		||||
	proc = rb_proc_new(sym_call, (VALUE)id);
 | 
			
		||||
	rb_block_clear_env_self(proc);
 | 
			
		||||
	aryp[index] = sym;
 | 
			
		||||
	aryp[index + 1] = proc;
 | 
			
		||||
	return proc;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue