diff options
| author | Eric Anholt <eric@anholt.net> | 2010-07-20 16:38:23 -0700 | 
|---|---|---|
| committer | Eric Anholt <eric@anholt.net> | 2010-07-20 17:30:10 -0700 | 
| commit | b6e92ad7da9d4f00607caca90bd0b8853623a493 (patch) | |
| tree | 65b8798082c7b959a2b661e8584e4bc3f921bd91 /src | |
| parent | 094cf8c199930d958d9e1139467eb8579d082df6 (diff) | |
glsl2: Don't claim a match on structure types with different field names.
We regularly do lookups on the field names of the structure to find
the types within the struct, so returning a structure type with bad
names will lead to lots of error types being found.
Diffstat (limited to 'src')
| -rw-r--r-- | src/glsl/glsl_types.cpp | 7 | 
1 files changed, 5 insertions, 2 deletions
| diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp index d6799cf428..6ca141ef48 100644 --- a/src/glsl/glsl_types.cpp +++ b/src/glsl/glsl_types.cpp @@ -438,10 +438,13 @@ glsl_type::record_key_compare(const void *a, const void *b)     if (key1->length != key2->length)        return 1; -   for (unsigned i = 0; i < key1->length; i++) -      /* FINISHME: Is the name of the structure field also significant? */ +   for (unsigned i = 0; i < key1->length; i++) {        if (key1->fields.structure[i].type != key2->fields.structure[i].type)  	 return 1; +      if (strcmp(key1->fields.structure[i].name, +		 key2->fields.structure[i].name) != 0) +	 return 1; +   }     return 0;  } | 
