From 1e8ed7e5950a83791966cd5cd1ffda72705f779c Mon Sep 17 00:00:00 2001
From: Tinny Ng <tng@apache.org>
Date: Thu, 16 Jan 2003 21:30:14 +0000
Subject: [PATCH] [Bug 16151] Memory leak in DTDScanner with ill-formed DTD
 declaration.  Fix by David Bertoni.

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@174639 13f79535-47bb-0310-9956-ffa450edef68
---
 src/xercesc/validators/DTD/DTDScanner.cpp | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/xercesc/validators/DTD/DTDScanner.cpp b/src/xercesc/validators/DTD/DTDScanner.cpp
index 063169682..756b8f812 100644
--- a/src/xercesc/validators/DTD/DTDScanner.cpp
+++ b/src/xercesc/validators/DTD/DTDScanner.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.21  2003/01/16 21:30:14  tng
+ * [Bug 16151] Memory leak in DTDScanner with ill-formed DTD declaration.  Fix by David Bertoni.
+ *
  * Revision 1.20  2002/12/24 16:12:19  tng
  * For performance reason, move the character check to scancharref.
  *
@@ -1268,8 +1271,8 @@ DTDScanner::scanChildren(const DTDElementDecl& elemDecl, XMLBuffer& bufToUse)
     &&  (opCh != chCloseParen))
     {
         // Not a legal char, so delete our node and return failure
-        fScanner->emitError(XMLErrs::ExpectedSeqChoiceLeaf);
         delete curNode;
+        fScanner->emitError(XMLErrs::ExpectedSeqChoiceLeaf);
         return 0;
     }
 
@@ -3303,8 +3306,8 @@ bool DTDScanner::scanMixed(DTDElementDecl& toFill)
                 // Has to be the closing paren now.
                 if (!fReaderMgr->skippedChar(chCloseParen))
                 {
-                    fScanner->emitError(XMLErrs::UnterminatedContentModel);
                     delete headNode;
+                    fScanner->emitError(XMLErrs::UnterminatedContentModel);
                     return false;
                 }
 
@@ -3344,8 +3347,8 @@ bool DTDScanner::scanMixed(DTDElementDecl& toFill)
             // Get a name token
             if (!fReaderMgr->getName(nameBuf))
             {
-                fScanner->emitError(XMLErrs::ExpectedElementName);
                 delete headNode;
+                fScanner->emitError(XMLErrs::ExpectedElementName);
                 return false;
             }
 
-- 
GitLab