Author: scantor
Date: Wed Jun 21 21:38:42 2017
New Revision: 1799522

URL: http://svn.apache.org/viewvc?rev=1799522&view=rev
Log:
Port XERCESC-2044 from 3.1 branch.

Modified:
    xerces/c/trunk/   (props changed)
    xerces/c/trunk/src/xercesc/internal/IGXMLScanner.cpp
    xerces/c/trunk/src/xercesc/internal/XSObjectFactory.cpp
    xerces/c/trunk/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp
    xerces/c/trunk/src/xercesc/validators/DTD/DTDScanner.cpp

Propchange: xerces/c/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jun 21 21:38:42 2017
@@ -1 +1 @@
-/xerces/c/branches/xerces-3.1:1662879,1662887,1662893-1662894
+/xerces/c/branches/xerces-3.1:1662879,1662887,1662893-1662894,1663359

Modified: xerces/c/trunk/src/xercesc/internal/IGXMLScanner.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/internal/IGXMLScanner.cpp?rev=1799522&r1=1799521&r2=1799522&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/internal/IGXMLScanner.cpp (original)
+++ xerces/c/trunk/src/xercesc/internal/IGXMLScanner.cpp Wed Jun 21 21:38:42 
2017
@@ -2398,7 +2398,11 @@ bool IGXMLScanner::scanStartTagNS(bool&
                 fSchemaElemNonDeclPool->put((void*)elemDecl->getBaseName()
                 , uriId, (int)Grammar::TOP_LEVEL_SCOPE, 
(SchemaElementDecl*)elemDecl)
             );
-        }
+        } else {
+             fValidator->emitError(
+                 XMLValid::GrammarNotFound, getURIText(uriId)
+             );
+       }
         wasAdded = true;
     }
 

Modified: xerces/c/trunk/src/xercesc/internal/XSObjectFactory.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/internal/XSObjectFactory.cpp?rev=1799522&r1=1799521&r2=1799522&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/internal/XSObjectFactory.cpp (original)
+++ xerces/c/trunk/src/xercesc/internal/XSObjectFactory.cpp Wed Jun 21 21:38:42 
2017
@@ -919,7 +919,7 @@ void XSObjectFactory::processFacets(Data
                 facetType = XSSimpleTypeDefinition::FACET_WHITESPACE;
                 isFixed = ((dvFixedFacets & 
DatatypeValidator::FACET_WHITESPACE) != 0);
             }
-            else if (XMLString::equals(key, SchemaSymbols::fgELT_PATTERN))
+            else if (XMLString::equals(key, SchemaSymbols::fgELT_PATTERN) && 
xsMultiFacetList)
             {
                 XMLStringTokenizer tokenizer(dv->getPattern(), regexSeparator, 
fMemoryManager);
                 patternList = new (fMemoryManager) RefArrayVectorOf<XMLCh>(
@@ -994,7 +994,7 @@ void XSObjectFactory::processFacets(Data
             }
         }
 
-        if (baseST->getMultiValueFacets())
+        if (baseST->getMultiValueFacets() && xsMultiFacetList)
         {
             XSMultiValueFacetList* baseMVFacets = 
baseST->getMultiValueFacets();
             for (unsigned int j=0; j<baseMVFacets->size(); j++)

Modified: xerces/c/trunk/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp?rev=1799522&r1=1799521&r2=1799522&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp 
(original)
+++ xerces/c/trunk/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp Wed 
Jun 21 21:38:42 2017
@@ -101,6 +101,8 @@ bool InMemMsgLoader::loadMsg(const  XMLM
             return false;
          else
              srcPtr = gXMLDOMMsgArray[msgToLoad - 1];
+    } else {
+       return false;
     }
 
      while (*srcPtr && (outPtr < endPtr))

Modified: xerces/c/trunk/src/xercesc/validators/DTD/DTDScanner.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/DTD/DTDScanner.cpp?rev=1799522&r1=1799521&r2=1799522&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/DTD/DTDScanner.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/DTD/DTDScanner.cpp Wed Jun 21 
21:38:42 2017
@@ -1219,7 +1219,7 @@ DTDScanner::scanChildren(const DTDElemen
                     if ((curNode->getType() == ContentSpecNode::Choice)
                     ||  (curNode->getType() == ContentSpecNode::Sequence))
                     {
-                        if (!curNode->getSecond())
+                        if (!curNode->getSecond() && lastNode)
                         {
                             ContentSpecNode* saveFirst = 
curNode->orphanFirst();
                             lastNode->setSecond(saveFirst);



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to