Author: scantor
Date: Mon Mar  2 17:01:52 2015
New Revision: 1663359

URL: http://svn.apache.org/r1663359
Log:
XERCESC-2044 - NPE fixes

Modified:
    xerces/c/branches/xerces-3.1/src/xercesc/internal/IGXMLScanner.cpp
    xerces/c/branches/xerces-3.1/src/xercesc/internal/XSObjectFactory.cpp
    
xerces/c/branches/xerces-3.1/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp
    xerces/c/branches/xerces-3.1/src/xercesc/validators/DTD/DTDScanner.cpp

Modified: xerces/c/branches/xerces-3.1/src/xercesc/internal/IGXMLScanner.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/branches/xerces-3.1/src/xercesc/internal/IGXMLScanner.cpp?rev=1663359&r1=1663358&r2=1663359&view=diff
==============================================================================
--- xerces/c/branches/xerces-3.1/src/xercesc/internal/IGXMLScanner.cpp 
(original)
+++ xerces/c/branches/xerces-3.1/src/xercesc/internal/IGXMLScanner.cpp Mon Mar  
2 17:01:52 2015
@@ -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/branches/xerces-3.1/src/xercesc/internal/XSObjectFactory.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/branches/xerces-3.1/src/xercesc/internal/XSObjectFactory.cpp?rev=1663359&r1=1663358&r2=1663359&view=diff
==============================================================================
--- xerces/c/branches/xerces-3.1/src/xercesc/internal/XSObjectFactory.cpp 
(original)
+++ xerces/c/branches/xerces-3.1/src/xercesc/internal/XSObjectFactory.cpp Mon 
Mar  2 17:01:52 2015
@@ -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/branches/xerces-3.1/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/branches/xerces-3.1/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp?rev=1663359&r1=1663358&r2=1663359&view=diff
==============================================================================
--- 
xerces/c/branches/xerces-3.1/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp
 (original)
+++ 
xerces/c/branches/xerces-3.1/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp
 Mon Mar  2 17:01:52 2015
@@ -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/branches/xerces-3.1/src/xercesc/validators/DTD/DTDScanner.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/branches/xerces-3.1/src/xercesc/validators/DTD/DTDScanner.cpp?rev=1663359&r1=1663358&r2=1663359&view=diff
==============================================================================
--- xerces/c/branches/xerces-3.1/src/xercesc/validators/DTD/DTDScanner.cpp 
(original)
+++ xerces/c/branches/xerces-3.1/src/xercesc/validators/DTD/DTDScanner.cpp Mon 
Mar  2 17:01:52 2015
@@ -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