* String equality tests should take the context into account. All the
evaluation test cases now succeed.
This commit is contained in:
		
							parent
							
								
									6bbfe95e30
								
							
						
					
					
						commit
						2d7636529f
					
				
					 2 changed files with 12 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -1019,9 +1019,17 @@ bool EvalState::eqValues(Value & v1, Value & v2)
 | 
			
		|||
        case tBool:
 | 
			
		||||
            return v1.boolean == v2.boolean;
 | 
			
		||||
 | 
			
		||||
        case tString:
 | 
			
		||||
            /* !!! contexts */
 | 
			
		||||
            return strcmp(v1.string.s, v2.string.s) == 0;
 | 
			
		||||
        case tString: {
 | 
			
		||||
            /* Compare both the string and its context. */
 | 
			
		||||
            if (strcmp(v1.string.s, v2.string.s) != 0) return false;
 | 
			
		||||
            const char * * p = v1.string.context, * * q = v2.string.context;
 | 
			
		||||
            if (!p && !q) return true;
 | 
			
		||||
            if (!p || !q) return false;
 | 
			
		||||
            for ( ; *p && *q; ++p, ++q)
 | 
			
		||||
                if (strcmp(*p, *q) != 0) return false;
 | 
			
		||||
            if (*p || *q) return false;
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        case tPath:
 | 
			
		||||
            return strcmp(v1.path, v2.path) == 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -69,7 +69,7 @@ struct Value
 | 
			
		|||
           For canonicity, the store paths should be in sorted order. */
 | 
			
		||||
        struct {
 | 
			
		||||
            const char * s;
 | 
			
		||||
            const char * * context;
 | 
			
		||||
            const char * * context; // must be in sorted order
 | 
			
		||||
        } string;
 | 
			
		||||
        
 | 
			
		||||
        const char * path;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue