From dbf1585d23518878a122c2fcc447c2ebab0a8a3d Mon Sep 17 00:00:00 2001 From: Alberto Massari <amassari@apache.org> Date: Wed, 12 Aug 2009 14:00:33 +0000 Subject: [PATCH] When parsing a "final" attribute, an empty value means an empty set, not "use finalDefault" (XERCESC-1716) git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@803516 13f79535-47bb-0310-9956-ffa450edef68 --- src/xercesc/validators/schema/TraverseSchema.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/xercesc/validators/schema/TraverseSchema.cpp b/src/xercesc/validators/schema/TraverseSchema.cpp index ad59963f2..4f8f66167 100644 --- a/src/xercesc/validators/schema/TraverseSchema.cpp +++ b/src/xercesc/validators/schema/TraverseSchema.cpp @@ -5245,9 +5245,9 @@ int TraverseSchema::parseFinalSet(const DOMElement* const elem, const XMLCh* finalVal = (isRoot) ? getElementAttValue(elem, SchemaSymbols::fgATT_FINALDEFAULT) : getElementAttValue(elem, SchemaSymbols::fgATT_FINAL); - if (!finalVal || !*finalVal) { + // finalVal == 0 means 'final attribute is missing'; *finalVal == 0 means 'final="" found' + if (finalVal == 0) return fSchemaInfo->getFinalDefault(); - } int finalSet = 0; @@ -5296,7 +5296,7 @@ int TraverseSchema::parseFinalSet(const DOMElement* const elem, } } //end while - return (finalSet == 0 ? fSchemaInfo->getFinalDefault() : finalSet); + return finalSet; } -- GitLab