From 2c52f9b9a411dd0b1f7bed8dee1c9a6f8771b3ee Mon Sep 17 00:00:00 2001
From: Alberto Massari <amassari@apache.org>
Date: Tue, 30 Jan 2007 16:50:31 +0000
Subject: [PATCH] Allow 'list' and 'union' in the finalDefault attribute of a
 schema (XERCESC-1633)

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@501463 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 d629f0609..7aea95c12 100644
--- a/src/xercesc/validators/schema/TraverseSchema.cpp
+++ b/src/xercesc/validators/schema/TraverseSchema.cpp
@@ -5158,7 +5158,7 @@ int TraverseSchema::parseFinalSet(const DOMElement* const elem,
         XMLCh* token = tokenizer.nextToken();
 
         if (XMLString::equals(token, SchemaSymbols::fgELT_UNION)
-            && finalType == S_Final) {
+            && (finalType == S_Final || finalType == ECS_Final)) {
 
             if ((finalSet & SchemaSymbols::XSD_UNION) == 0) {
                 finalSet += SchemaSymbols::XSD_UNION;
@@ -5168,7 +5168,7 @@ int TraverseSchema::parseFinalSet(const DOMElement* const elem,
             }
         }
         else if (XMLString::equals(token, SchemaSymbols::fgATTVAL_EXTENSION)
-                 && finalType != S_Final) {
+                 && (finalType == EC_Final || finalType == ECS_Final)) {
 
             if ((finalSet & SchemaSymbols::XSD_EXTENSION) == 0) {
                 finalSet += SchemaSymbols::XSD_EXTENSION;
@@ -5178,7 +5178,7 @@ int TraverseSchema::parseFinalSet(const DOMElement* const elem,
             }
         }
         else if (XMLString::equals(token, SchemaSymbols::fgELT_LIST)
-                 && finalType == S_Final) {
+                 && (finalType == S_Final || finalType == ECS_Final)) {
 
             if ((finalSet & SchemaSymbols::XSD_LIST) == 0 ) {
                 finalSet += SchemaSymbols::XSD_LIST;
-- 
GitLab