* 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