Correction to device property matching code to fix a problem that

caused LVS(A, B) to give different results for property errors
than LVS(B, A).
This commit is contained in:
Tim Edwards 2016-12-12 13:31:56 -05:00
parent fdab366627
commit 4f24915661
1 changed files with 13 additions and 8 deletions

View File

@ -4195,6 +4195,10 @@ int PropertyCheckMismatch(struct objlist *tp1, struct nlist *tc1,
vl1 = &svl; vl1 = &svl;
if ((*matchfunc)(vl1->key, vl2->key)) break; if ((*matchfunc)(vl1->key, vl2->key)) break;
/* Check if property is "of interest". */
kl2 = (struct property *)HashLookup(vl2->key, &(tc2->propdict));
if (kl2 != NULL) {
/* No match */ /* No match */
if (do_print) { if (do_print) {
Fprintf(stdout, "%s vs. %s:\n", inst1, inst2); Fprintf(stdout, "%s vs. %s:\n", inst1, inst2);
@ -4204,6 +4208,7 @@ int PropertyCheckMismatch(struct objlist *tp1, struct nlist *tc1,
if (rval != NULL) mismatches++; if (rval != NULL) mismatches++;
} }
} }
}
if (j == len2) break; if (j == len2) break;
} }
else i++; else i++;
@ -4213,9 +4218,9 @@ int PropertyCheckMismatch(struct objlist *tp1, struct nlist *tc1,
/* Check if this is a "property of interest". */ /* Check if this is a "property of interest". */
kl1 = (struct property *)HashLookup(vl1->key, &(tc1->propdict)); kl1 = (struct property *)HashLookup(vl1->key, &(tc1->propdict));
if (kl1 == NULL) { if (kl1 == NULL) {
if (vl1 == &mvl) if ((*matchfunc)(vl1->key, mvl.key))
kl1 = &klm; kl1 = &klm;
else if (vl1 == &svl) else if ((*matchfunc)(vl1->key, svl.key))
kl1 = &kls; kl1 = &kls;
else { else {
if (j < len2) check2[j] = 1; /* Mark as checked */ if (j < len2) check2[j] = 1; /* Mark as checked */