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:
parent
fdab366627
commit
4f24915661
|
|
@ -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 */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue