From 86d70939341fcaef256fba2dfc5b204950646699 Mon Sep 17 00:00:00 2001
From: Alberto Massari <amassari@apache.org>
Date: Thu, 30 Oct 2008 10:53:48 +0000
Subject: [PATCH] When a schema had a xsd:notation with an annotation inside, a
 XSAnnotation object was leaked

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@709137 13f79535-47bb-0310-9956-ffa450edef68
---
 src/xercesc/validators/schema/TraverseSchema.cpp | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/xercesc/validators/schema/TraverseSchema.cpp b/src/xercesc/validators/schema/TraverseSchema.cpp
index 8e6045ba9..a756df61d 100644
--- a/src/xercesc/validators/schema/TraverseSchema.cpp
+++ b/src/xercesc/validators/schema/TraverseSchema.cpp
@@ -2942,13 +2942,13 @@ const XMLCh* TraverseSchema::traverseNotationDecl(const DOMElement* const elem)
         return 0;
     }
 
-    if (checkContent(elem, XUtil::getFirstChildElement(elem), true) != 0)
-        reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::OnlyAnnotationExpected);
-
     if (fNotationRegistry->containsKey(name, fTargetNSURI)) {
         return name;
     }
 
+    if (checkContent(elem, XUtil::getFirstChildElement(elem), true) != 0)
+        reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::OnlyAnnotationExpected);
+
     const XMLCh* publicId = getElementAttValue(elem, SchemaSymbols::fgATT_PUBLIC);
     const XMLCh* systemId = getElementAttValue(elem, SchemaSymbols::fgATT_SYSTEM);
 
@@ -2967,8 +2967,6 @@ const XMLCh* TraverseSchema::traverseNotationDecl(const DOMElement* const elem)
     decl->setNameSpaceId(fTargetNSURI);
     fSchemaGrammar->putNotationDecl(decl);
 
-    //we don't really care if something inside <notation> is wrong..
-    checkContent(elem, XUtil::getFirstChildElement(elem), true);
     if (fAnnotation)
         fSchemaGrammar->putAnnotation(decl, fAnnotation);
     else if (fScanner->getGenerateSyntheticAnnotations() && fNonXSAttList->size())
-- 
GitLab