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