mirror of
				git://git.code.sf.net/p/cdesktopenv/code
				synced 2025-03-09 15:50:02 +00:00 
			
		
		
		
	arith.c: scope(): de-obfuscate some code
This function adds the NV_ADD flag to its 'flags' variable for
nv_serach() calls subject to some checks. However, every call that
uses that variable explicitly turns off the NV_ADD bit again.
A search in the ast-open-history repo reveals that this check
briefly made a difference between versions 2010-06-25 and
2010-08-11, but it's been a complete no-op ever since.
src/cmd/ksh93/sh/arith.c: scope():
- Remove no-op code.
- Resolve the constant expressions involving the 'flags' variable,
  get rid of the variable, and just indicate the flag bitmasks
  directly in the nv_search() calls.
- Detangle and split up the excessively long 'if' construct.
No change in behaviour.
Previously noticed by Kurtis Rader for ksh2020:
d5ce3b05
			
			
This commit is contained in:
		
							parent
							
								
									214308f81e
								
							
						
					
					
						commit
						2d65148fad
					
				
					 1 changed files with 7 additions and 5 deletions
				
			
		| 
						 | 
					@ -64,7 +64,6 @@ static Namval_t *scope(register Namval_t *np,register struct lval *lvalue,int as
 | 
				
			||||||
	register char *sub=0, *cp=(char*)np;
 | 
						register char *sub=0, *cp=(char*)np;
 | 
				
			||||||
	register Namval_t *mp;
 | 
						register Namval_t *mp;
 | 
				
			||||||
	Shell_t		*shp = lvalue->shp;
 | 
						Shell_t		*shp = lvalue->shp;
 | 
				
			||||||
	int	flags = HASH_NOSCOPE|HASH_SCOPE|HASH_BUCKET;
 | 
					 | 
				
			||||||
	int	c=0,nosub = lvalue->nosub;
 | 
						int	c=0,nosub = lvalue->nosub;
 | 
				
			||||||
	Dt_t	*sdict = (shp->st.real_fun? shp->st.real_fun->sdict:0);
 | 
						Dt_t	*sdict = (shp->st.real_fun? shp->st.real_fun->sdict:0);
 | 
				
			||||||
	Dt_t	*nsdict = (shp->namespace?nv_dict(shp->namespace):0);
 | 
						Dt_t	*nsdict = (shp->namespace?nv_dict(shp->namespace):0);
 | 
				
			||||||
| 
						 | 
					@ -100,10 +99,13 @@ static Namval_t *scope(register Namval_t *np,register struct lval *lvalue,int as
 | 
				
			||||||
			flag = 0;
 | 
								flag = 0;
 | 
				
			||||||
		cp = (char*)np;
 | 
							cp = (char*)np;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else if(assign==NV_ASSIGN  && nv_isnull(np) && !nv_isattr(np, ~(NV_MINIMAL|NV_NOFREE)))
 | 
						if((lvalue->emode & ARITH_COMP) && dtvnext(root))
 | 
				
			||||||
		flags |= NV_ADD;
 | 
						{
 | 
				
			||||||
	if((lvalue->emode&ARITH_COMP) && dtvnext(root) && ((sdict && (mp=nv_search(cp,sdict,flags&~NV_ADD))) || (mp=nv_search(cp,root,flags&~(NV_ADD))) || (nsdict && (mp=nv_search(cp,nsdict,flags&~(NV_ADD|HASH_NOSCOPE)))) ))
 | 
							if(mp = nv_search(cp, sdict ? sdict : root, HASH_NOSCOPE|HASH_SCOPE|HASH_BUCKET))
 | 
				
			||||||
		np = mp;
 | 
								np = mp;
 | 
				
			||||||
 | 
							else if(nsdict && (mp = nv_search(cp, nsdict, HASH_SCOPE|HASH_BUCKET)))
 | 
				
			||||||
 | 
								np = mp;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	while(nv_isref(np))
 | 
						while(nv_isref(np))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
#if SHOPT_FIXEDARRAY
 | 
					#if SHOPT_FIXEDARRAY
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue