* In an nested with' where the inner with is a variable (with ...;
				
					
				
			with someVar; ...'), the contents of the variable would be clobbered. (The attributes in the outer `with' were added to the variable.)
This commit is contained in:
		
							parent
							
								
									04c4bd3624
								
							
						
					
					
						commit
						02c1dac909
					
				
					 3 changed files with 15 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -177,14 +177,15 @@ static void getDerivations(EvalState & state, Value & vIn,
 | 
			
		|||
           there are names clashes between derivations, the derivation
 | 
			
		||||
           bound to the attribute with the "lower" name should take
 | 
			
		||||
           precedence). */
 | 
			
		||||
        StringSet attrs;
 | 
			
		||||
        typedef std::map<string, Symbol> SortedSymbols;
 | 
			
		||||
        SortedSymbols attrs;
 | 
			
		||||
        foreach (Bindings::iterator, i, *v.attrs)
 | 
			
		||||
            attrs.insert(i->first);
 | 
			
		||||
            attrs.insert(std::pair<string, Symbol>(i->first, i->first));
 | 
			
		||||
 | 
			
		||||
        foreach (StringSet::iterator, i, attrs) {
 | 
			
		||||
            startNest(nest, lvlDebug, format("evaluating attribute `%1%'") % *i);
 | 
			
		||||
            string pathPrefix2 = addToPath(pathPrefix, *i);
 | 
			
		||||
            Value & v2((*v.attrs)[state.symbols.create(*i)]);
 | 
			
		||||
        foreach (SortedSymbols::iterator, i, attrs) {
 | 
			
		||||
            startNest(nest, lvlDebug, format("evaluating attribute `%1%'") % i->first);
 | 
			
		||||
            string pathPrefix2 = addToPath(pathPrefix, i->first);
 | 
			
		||||
            Value & v2((*v.attrs)[i->second]);
 | 
			
		||||
            if (combineChannels)
 | 
			
		||||
                getDerivations(state, v2, pathPrefix2, autoArgs, drvs, done);
 | 
			
		||||
            else if (getDerivation(state, v2, pathPrefix2, drvs, done)) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue