You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by am...@apache.org on 2008/02/05 16:59:57 UTC

svn commit: r618681 - in /xerces/c/trunk/src/xercesc/validators/schema: SchemaInfo.cpp SchemaInfo.hpp TraverseSchema.cpp

Author: amassari
Date: Tue Feb  5 07:59:53 2008
New Revision: 618681

URL: http://svn.apache.org/viewvc?rev=618681&view=rev
Log:
SchemaInfo now makes a copy of the targetNSUri to avoid pointing to deleted memory if the corresponding SchemaGrammar gets deleted early; the schema URL is now replicated inside the constructor instead of relying on the caller to pass a duplicated string

Modified:
    xerces/c/trunk/src/xercesc/validators/schema/SchemaInfo.cpp
    xerces/c/trunk/src/xercesc/validators/schema/SchemaInfo.hpp
    xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp

Modified: xerces/c/trunk/src/xercesc/validators/schema/SchemaInfo.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/schema/SchemaInfo.cpp?rev=618681&r1=618680&r2=618681&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/SchemaInfo.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/SchemaInfo.cpp Tue Feb  5 07:59:53 2008
@@ -40,7 +40,7 @@
                        const int targetNSURI,
                        const int scopeCount,
                        const NamespaceScope* const currNamespaceScope,
-                       XMLCh* const schemaURL,
+                       const XMLCh* const schemaURL,
                        const XMLCh* const targetNSURIString,
                        const DOMElement* const root,
                        MemoryManager* const manager)
@@ -52,8 +52,6 @@
     , fTargetNSURI(targetNSURI)
     , fScopeCount(scopeCount)
     , fNamespaceScope(0)
-    , fCurrentSchemaURL(schemaURL)
-    , fTargetNSURIString(targetNSURIString)
     , fSchemaRootElement(root)
     , fIncludeInfoList(0)
     , fImportedInfoList(0)
@@ -80,12 +78,15 @@
     fNonXSAttList = new (fMemoryManager) ValueVectorOf<DOMNode*>(2, fMemoryManager);
     fValidationContext = new (fMemoryManager) ValidationContextImpl(fMemoryManager);
     fNamespaceScope = new (fMemoryManager) NamespaceScope(currNamespaceScope, fMemoryManager);
+    fCurrentSchemaURL = XMLString::replicate(schemaURL, fMemoryManager);
+	fTargetNSURIString = XMLString::replicate(targetNSURIString, fMemoryManager);
 }
 
 
 SchemaInfo::~SchemaInfo()
 {
     fMemoryManager->deallocate(fCurrentSchemaURL);//delete [] fCurrentSchemaURL;
+	fMemoryManager->deallocate(fTargetNSURIString);
     delete fImportedInfoList;
 
     if (fAdoptInclude)

Modified: xerces/c/trunk/src/xercesc/validators/schema/SchemaInfo.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/schema/SchemaInfo.hpp?rev=618681&r1=618680&r2=618681&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/SchemaInfo.hpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/SchemaInfo.hpp Tue Feb  5 07:59:53 2008
@@ -82,7 +82,7 @@
                const int targetNSURI,
                const int scopeCount,
                const NamespaceScope* const currNamespaceScope,
-               XMLCh* const schemaURL,
+               const XMLCh* const schemaURL,
                const XMLCh* const targetNSURIString,
                const DOMElement* const root,
                MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
@@ -92,7 +92,7 @@
     // -----------------------------------------------------------------------
     //  Getter methods
     // -----------------------------------------------------------------------
-    XMLCh*                            getCurrentSchemaURL() const;
+    XMLCh* const                      getCurrentSchemaURL() const;
     const XMLCh* const                getTargetNSURIString() const;
     const DOMElement*                 getRoot() const;
     bool                              getProcessed() const;
@@ -162,7 +162,7 @@
     int                               fScopeCount;
     NamespaceScope*                   fNamespaceScope;
     XMLCh*                            fCurrentSchemaURL;
-    const XMLCh*                      fTargetNSURIString;
+    XMLCh*                            fTargetNSURIString;
     const DOMElement*                 fSchemaRootElement;
     RefVectorOf<SchemaInfo>*          fIncludeInfoList;
     RefVectorOf<SchemaInfo>*          fImportedInfoList;
@@ -205,7 +205,7 @@
     return fNamespaceScope;
 }
 
-inline XMLCh* SchemaInfo::getCurrentSchemaURL() const {
+inline XMLCh* const SchemaInfo::getCurrentSchemaURL() const {
 
     return fCurrentSchemaURL;
 }

Modified: xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp?rev=618681&r1=618680&r2=618681&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp Tue Feb  5 07:59:53 2008
@@ -387,7 +387,7 @@
 
     SchemaInfo* currInfo = new (fMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount,
                                           fSchemaInfo?fSchemaInfo->getNamespaceScope():NULL,
-                                          XMLString::replicate(schemaURL, fGrammarPoolMemoryManager),
+                                          schemaURL,
                                           fTargetNSURIString, schemaRoot,
                                           fGrammarPoolMemoryManager);
 
@@ -692,7 +692,7 @@
 
             fSchemaInfo = new (fMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount,
                                          fSchemaInfo->getNamespaceScope(),
-                                         XMLString::replicate(includeURL, fGrammarPoolMemoryManager),
+                                         includeURL,
                                          fTargetNSURIString, root,
                                          fGrammarPoolMemoryManager);
 
@@ -8217,7 +8217,7 @@
         redefSchemaInfo = fSchemaInfo;
         Janitor<SchemaInfo> newSchemaInfo(new (fMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount,
                                      fSchemaInfo->getNamespaceScope(),
-                                     XMLString::replicate(includeURL, fGrammarPoolMemoryManager),
+                                     includeURL,
                                      fTargetNSURIString, root,
                                      fGrammarPoolMemoryManager));
         fSchemaInfo = newSchemaInfo.get();



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org