cargilld    2004/02/05 10:09:53

  Modified:    c/src/xercesc/framework/psvi XSModel.cpp
               c/src/xercesc/internal XSObjectFactory.cpp
  Log:
  Fix a seg fault with PSVI and set basetype of anysimpletype to be anytype.
  
  Revision  Changes    Path
  1.20      +7 -4      xml-xerces/c/src/xercesc/framework/psvi/XSModel.cpp
  
  Index: XSModel.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/psvi/XSModel.cpp,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- XSModel.cpp       29 Jan 2004 11:46:30 -0000      1.19
  +++ XSModel.cpp       5 Feb 2004 18:09:53 -0000       1.20
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.20  2004/02/05 18:09:53  cargilld
  + * Fix a seg fault with PSVI and set basetype of anysimpletype to be anytype.
  + *
    * Revision 1.19  2004/01/29 11:46:30  cargilld
    * Code cleanup changes to get rid of various compiler diagnostic messages.
    *
  @@ -244,11 +247,11 @@
       dvFactory.expandRegistryToFullSchemaSet();
       addS4SToXSModel
       (
  -        getNamespaceItem(SchemaSymbols::fgURI_SCHEMAFORSCHEMA)
  +        namespaceItem
           , dvFactory.getBuiltInRegistry()
       );
  -
  -    unsigned int numberOfNamespaces = fXSNamespaceItemList->size();
  +    // don't include  S4S (thus the -1)
  +    unsigned int numberOfNamespaces = fXSNamespaceItemList->size() -1;
       for (unsigned int j = 0; j < numberOfNamespaces; j++)
           addGrammarToXSModel(fXSNamespaceItemList->elementAt(j));
   }
  @@ -416,7 +419,7 @@
           fDeleteNamespace->addElement(namespaceItem);
           addS4SToXSModel
           (
  -            getNamespaceItem(SchemaSymbols::fgURI_SCHEMAFORSCHEMA)
  +            namespaceItem
               , dvFactory.getBuiltInRegistry()
           );
       }
  
  
  
  1.20      +12 -4     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.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- XSObjectFactory.cpp       7 Jan 2004 02:33:56 -0000       1.19
  +++ XSObjectFactory.cpp       5 Feb 2004 18:09:53 -0000       1.20
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.20  2004/02/05 18:09:53  cargilld
  + * Fix a seg fault with PSVI and set basetype of anysimpletype to be anytype.
  + *
    * Revision 1.19  2004/01/07 02:33:56  knoaman
    * PSVI: inherit facets from base type
    *
  @@ -396,7 +399,7 @@
       XSSimpleTypeDefinition* xsObj = (XSSimpleTypeDefinition*) 
xsModel->getXSObject(validator);
       if (!xsObj)
       {
  -        XSSimpleTypeDefinition* baseType = 0;
  +        XSTypeDefinition* baseType = 0;
           XSSimpleTypeDefinitionList* memberTypes = 0;
           XSSimpleTypeDefinition* primitiveOrItemType = 0;
           XSSimpleTypeDefinition::VARIETY typeVariety = 
XSSimpleTypeDefinition::VARIETY_ATOMIC;
  @@ -438,7 +441,7 @@
               if (baseDV->getType() == DatatypeValidator::List)
               {
                   baseType = addOrFind(baseDV, xsModel);
  -                primitiveOrItemType = baseType->getItemType();
  +                primitiveOrItemType = ((XSSimpleTypeDefinition*) 
baseType)->getItemType();
               }
               else
               {
  @@ -455,7 +458,7 @@
               if (baseDV)
               {
                   baseType = addOrFind(baseDV, xsModel);
  -                primitiveOrItemType = baseType->getPrimitiveType();
  +                primitiveOrItemType = ((XSSimpleTypeDefinition*) 
baseType)->getPrimitiveType();
               }
               else // built-in
               {
  @@ -467,6 +470,10 @@
                   primitiveTypeSelf = true;
               }
           }
  +        else
  +        {
  +            baseType = xsModel->getTypeDefinition(SchemaSymbols::fgATTVAL_ANYTYPE, 
SchemaSymbols::fgURI_SCHEMAFORSCHEMA);            
  +        }
   
           xsObj = new (fMemoryManager) XSSimpleTypeDefinition
           (
  @@ -1061,7 +1068,8 @@
       }
   
       // inherit facets from base
  -    if (xsST->getBaseType())
  +
  +    if (xsST->getBaseType() && xsST->getBaseType()->getTypeCategory() == 
XSTypeDefinition::SIMPLE_TYPE)
       {
           XSSimpleTypeDefinition* baseST = (XSSimpleTypeDefinition*) 
xsST->getBaseType();
           XSFacetList* baseFacets = baseST->getFacets();
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to