[prev in list] [next in list] [prev in thread] [next in thread]
List: xerces-cvs
Subject: cvs commit: xml-xerces/c/src/xercesc/framework/psvi XSComplexTypeDefinition.cpp XSMultiValueFacet.cp
From: neilg () apache ! org
Date: 2003-11-27 16:42:00
[Download RAW message or body]
neilg 2003/11/27 08:42:00
Modified: c/src/xercesc/internal XSObjectFactory.cpp
c/src/xercesc/framework/psvi XSComplexTypeDefinition.cpp
XSMultiValueFacet.cpp
Log:
fixes for segfaults and infinite loops in schema component model implementation; \
thanks to David Cargill
Revision Changes Path
1.7 +23 -11 xml-xerces/c/src/xercesc/internal/XSObjectFactory.cpp
Index: XSObjectFactory.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/XSObjectFactory.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- XSObjectFactory.cpp 25 Nov 2003 17:50:15 -0000 1.6
+++ XSObjectFactory.cpp 27 Nov 2003 16:42:00 -0000 1.7
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.7 2003/11/27 16:42:00 neilg
+ * fixes for segfaults and infinite loops in schema component model \
implementation; thanks to David Cargill + *
* Revision 1.6 2003/11/25 17:50:15 knoaman
* Fix AIX linking error
*
@@ -512,20 +515,16 @@
if ((typeInfo->getContentType() == SchemaElementDecl::Simple) &&
(typeInfo->getDatatypeValidator()))
xsSimpleType = addOrFind(typeInfo->getDatatypeValidator(), xsModel);
-
+
+ unsigned int attCount;
if (typeInfo->hasAttDefs())
{
SchemaAttDefList& attDefList = (SchemaAttDefList&) \
typeInfo->getAttDefList();
- unsigned int attCount = attDefList.getAttDefCount();
- xsAttList = new (fMemoryManager) RefVectorOf<XSAttributeUse>(attCount, \
false, fMemoryManager);
-
- for(unsigned int i=0; i<attCount; i++)
- {
- SchemaAttDef& attDef = (SchemaAttDef&) attDefList.getAttDef(i);
- XSAttributeDeclaration* xsAttDecl = addOrFind(&attDef, xsModel);
- XSAttributeUse* attUse = createXSAttributeUse(xsAttDecl, xsModel);
- xsAttList->addElement(attUse);
- }
+ attCount = attDefList.getAttDefCount();
+ xsAttList = new (fMemoryManager) RefVectorOf<XSAttributeUse>(attCount, \
false, fMemoryManager); + // create list now put fill it in \
after we put complextype into map + // otherwise we may encounter an \
infinite loop: complextype needs to + // addorfind attdef, which does an \
addorfind on the enclosingCTdefintion. }
// compute fBase
@@ -552,6 +551,19 @@
, fMemoryManager
);
putObjectInMap(typeInfo, xsObj, xsModel);
+
+ if (typeInfo->hasAttDefs())
+ {
+ // now create the xsattributedeclarations...
+ SchemaAttDefList& attDefList = (SchemaAttDefList&) \
typeInfo->getAttDefList(); + for(unsigned int i=0; i<attCount; i++)
+ {
+ SchemaAttDef& attDef = (SchemaAttDef&) attDefList.getAttDef(i);
+ XSAttributeDeclaration* xsAttDecl = addOrFind(&attDef, xsModel);
+ XSAttributeUse* attUse = createXSAttributeUse(xsAttDecl, xsModel);
+ xsAttList->addElement(attUse);
+ }
+ }
// process local elements
unsigned int elemCount = typeInfo->elementCount();
1.8 +7 -0 \
xml-xerces/c/src/xercesc/framework/psvi/XSComplexTypeDefinition.cpp
Index: XSComplexTypeDefinition.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/psvi/XSComplexTypeDefinition.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- XSComplexTypeDefinition.cpp 25 Nov 2003 18:08:31 -0000 1.7
+++ XSComplexTypeDefinition.cpp 27 Nov 2003 16:42:00 -0000 1.8
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.8 2003/11/27 16:42:00 neilg
+ * fixes for segfaults and infinite loops in schema component model \
implementation; thanks to David Cargill + *
* Revision 1.7 2003/11/25 18:08:31 knoaman
* Misc. PSVI updates. Thanks to David Cargill.
*
@@ -88,6 +91,7 @@
#include <xercesc/framework/psvi/XSAttributeUse.hpp>
#include <xercesc/framework/psvi/XSModel.hpp>
#include <xercesc/framework/psvi/XSAnnotation.hpp>
+#include <xercesc/framework/psvi/XSParticle.hpp>
#include <xercesc/validators/schema/ComplexTypeInfo.hpp>
#include <xercesc/validators/schema/SchemaElementDecl.hpp>
#include <xercesc/validators/schema/SchemaAttDefList.hpp>
@@ -152,6 +156,9 @@
if (fXSAnnotationList)
delete fXSAnnotationList;
+
+ if (fParticle)
+ delete fParticle;
}
// ---------------------------------------------------------------------------
1.6 +4 -0 xml-xerces/c/src/xercesc/framework/psvi/XSMultiValueFacet.cpp
Index: XSMultiValueFacet.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/psvi/XSMultiValueFacet.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- XSMultiValueFacet.cpp 21 Nov 2003 17:34:04 -0000 1.5
+++ XSMultiValueFacet.cpp 27 Nov 2003 16:42:00 -0000 1.6
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.6 2003/11/27 16:42:00 neilg
+ * fixes for segfaults and infinite loops in schema component model \
implementation; thanks to David Cargill + *
* Revision 1.5 2003/11/21 17:34:04 knoaman
* PSVI update
*
@@ -94,6 +97,7 @@
, fFacetKind(facetKind)
, fIsFixed(isFixed)
, fLexicalValues(lexicalValues)
+ , fXSAnnotationList(0)
{
if (headAnnot)
{
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic