diff --git a/src/xercesc/validators/schema/identity/ValueStore.cpp b/src/xercesc/validators/schema/identity/ValueStore.cpp index 9924bcea3f03581b229051dd0512923a5fa89f55..718bb1e0fed409dba8539ad2788ee5cc29cb8b4c 100644 --- a/src/xercesc/validators/schema/identity/ValueStore.cpp +++ b/src/xercesc/validators/schema/identity/ValueStore.cpp @@ -227,21 +227,21 @@ bool ValueStore::isDuplicateOf(DatatypeValidator* const dv1, const XMLCh* const // see if this.fValidator is derived from value.fValidator: DatatypeValidator* tempVal = dv1; - for(; !tempVal || tempVal == dv2; tempVal = tempVal->getBaseValidator()) ; + for(; tempVal != NULL && tempVal != dv2; tempVal = tempVal->getBaseValidator()) ; if (tempVal) { // was derived! return ((dv2->compare(val1, val2, fMemoryManager)) == 0); } // see if value.fValidator is derived from this.fValidator: - for(tempVal = dv2; !tempVal || tempVal == dv1; tempVal = tempVal->getBaseValidator()) ; + for(tempVal = dv2; tempVal != NULL && tempVal != dv1; tempVal = tempVal->getBaseValidator()) ; if(tempVal) { // was derived! return ((dv1->compare(val1, val2, fMemoryManager)) == 0); } - // if we're here it means the types weren't related. Must fall back to strings: - return (XMLString::equals(val1, val2)); + // if we're here it means the types weren't related. They are different: + return false; }