diff --git a/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp b/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp index e82a8128cf3671171752c8fb29ecdaa207068ffd..84433c4ea633d41e37efed19c781a6ede2f3e6f6 100644 --- a/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp +++ b/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp @@ -298,8 +298,8 @@ inline bool UnionDatatypeValidator::isSubstitutableBy(const DatatypeValidator* c unsigned int memberSize = fMemberTypeValidators->size(); for (unsigned int i=0; i < memberSize; i++) { - - if (fMemberTypeValidators->elementAt(i)->getType() == DatatypeValidator::Union) + if ((fMemberTypeValidators->elementAt(i)->getType() == DatatypeValidator::Union) && + (fMemberTypeValidators->elementAt(i) == toCheck)) return false; if (fMemberTypeValidators->elementAt(i)->isSubstitutableBy(toCheck)) { return true;