cargilld 2004/08/31 09:53:22 Modified: c/src/xercesc/validators/schema ComplexTypeInfo.hpp Log: Thread safety change for getTypeLocalName and getTypeUri. Revision Changes Path 1.21 +27 -25 xml-xerces/c/src/xercesc/validators/schema/ComplexTypeInfo.hpp Index: ComplexTypeInfo.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/ComplexTypeInfo.hpp,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- ComplexTypeInfo.hpp 22 Jul 2004 15:00:54 -0000 1.20 +++ ComplexTypeInfo.hpp 31 Aug 2004 16:53:22 -0000 1.21 @@ -161,6 +161,9 @@ void setAttWildCard(SchemaAttDef* const toAdopt); void addAttDef(SchemaAttDef* const toAdd); void addElement(SchemaElementDecl* const toAdd); + /** + * @deprecated; not thread-safe (will not work with shared grammars) + */ void setContentModel(XMLContentModel* const newModelToAdopt); void setLocator(XSDLocator* const aLocator); @@ -420,32 +423,11 @@ inline const XMLCh* ComplexTypeInfo::getTypeLocalName() const { - if(!fTypeLocalName) { - int index = XMLString::indexOf(fTypeName, chComma); - int length = XMLString::stringLen(fTypeName); - XMLCh *tName = (XMLCh*) fMemoryManager->allocate - ( - (length - index + 1) * sizeof(XMLCh) - ); //new XMLCh[length - index + 1]; - XMLString::subString(tName, fTypeName, index + 1, length, fMemoryManager); - ((ComplexTypeInfo *)this)->fTypeLocalName = tName; - } - return fTypeLocalName; } inline const XMLCh* ComplexTypeInfo::getTypeUri() const { - if(!fTypeUri) { - int index = XMLString::indexOf(fTypeName, chComma); - XMLCh *uri = (XMLCh*) fMemoryManager->allocate - ( - (index + 1) * sizeof(XMLCh) - ); //new XMLCh[index + 1]; - XMLString::subString(uri, fTypeName, 0, index, fMemoryManager); - ((ComplexTypeInfo *)this)->fTypeUri = uri; - } - return fTypeUri; } @@ -507,10 +489,30 @@ fMemoryManager->deallocate(fTypeName);//delete [] fTypeName; fMemoryManager->deallocate(fTypeLocalName);//delete [] fTypeLocalName; - fMemoryManager->deallocate(fTypeUri);//delete [] fTypeUri; - fTypeLocalName = fTypeUri = 0; + fMemoryManager->deallocate(fTypeUri);//delete [] fTypeUri; + + if (typeName) + { + fTypeName = XMLString::replicate(typeName, fMemoryManager); - fTypeName = XMLString::replicate(typeName, fMemoryManager); + int index = XMLString::indexOf(fTypeName, chComma); + int length = XMLString::stringLen(fTypeName); + fTypeLocalName = (XMLCh*) fMemoryManager->allocate + ( + (length - index + 1) * sizeof(XMLCh) + ); //new XMLCh[length - index + 1]; + XMLString::subString(fTypeLocalName, fTypeName, index + 1, length, fMemoryManager); + + fTypeUri = (XMLCh*) fMemoryManager->allocate + ( + (index + 1) * sizeof(XMLCh) + ); //new XMLCh[index + 1]; + XMLString::subString(fTypeUri, fTypeName, 0, index, fMemoryManager); + } + else + { + fTypeName = fTypeLocalName = fTypeUri = 0; + } } inline void
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]