You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ne...@apache.org on 2003/12/08 01:11:26 UTC

cvs commit: xml-xerces/c/src/xercesc/internal IGXMLScanner2.cpp SGXMLScanner.cpp

neilg       2003/12/07 16:11:26

  Modified:    c/src/xercesc/internal IGXMLScanner2.cpp SGXMLScanner.cpp
  Log:
  fix bug in PSVI where a segfault would occur if an attribute was not defined
  
  Revision  Changes    Path
  1.50      +40 -37    xml-xerces/c/src/xercesc/internal/IGXMLScanner2.cpp
  
  Index: IGXMLScanner2.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner2.cpp,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- IGXMLScanner2.cpp	28 Nov 2003 20:20:54 -0000	1.49
  +++ IGXMLScanner2.cpp	8 Dec 2003 00:11:26 -0000	1.50
  @@ -578,43 +578,46 @@
   	                actualAttDef = (SchemaAttDef *)attDef;
   	            else if (attDefForWildCard)
   	                actualAttDef = (SchemaAttDef *)attDefForWildCard;
  -	            XSAttributeDeclaration *attrDecl = (XSAttributeDeclaration *)fModel->getXSObject(actualAttDef);
  -	            PSVIAttribute *toFill = fPSVIAttrList->getPSVIAttributeToFill(); 
  -                DatatypeValidator * attrDataType = actualAttDef->getDatatypeValidator();
  -	            XSSimpleTypeDefinition *validatingType = (XSSimpleTypeDefinition *)fModel->getXSObject(attrDataType);
  -	            if(attrValid != PSVIItem::VALIDITY_VALID)
  -	            {
  -	                toFill->reset(
  -	                    fRootElemName
  -	                    , attrValid
  -	                    , attrAssessed
  -	                    , normBuf.getRawBuffer()
  -	                    , validatingType
  -	                    , 0
  -	                    , actualAttDef->getValue()
  -	                    , false
  -	                    , attrDecl
  -                        , 0
  -	                );
  -	            }
  -	            else
  -	            {
  -	                XSSimpleTypeDefinition *memberType = 0;
  -	                if(validatingType->getVariety() == XSSimpleTypeDefinition::VARIETY_UNION)
  -	                    memberType = (XSSimpleTypeDefinition *)fModel->getXSObject(attrValidator);
  -	                toFill->reset(
  -	                    fRootElemName
  -	                    , attrValid
  -	                    , attrAssessed
  -	                    , normBuf.getRawBuffer()
  -	                    , validatingType
  -	                    , memberType
  -	                    , actualAttDef->getValue()
  -	                    , false
  -	                    , attrDecl
  -                        , (memberType)?attrValidator:attrDataType
  -	                );
  -	            }
  +                if(actualAttDef)
  +                {
  +	                XSAttributeDeclaration *attrDecl = (XSAttributeDeclaration *)fModel->getXSObject(actualAttDef);
  +	                PSVIAttribute *toFill = fPSVIAttrList->getPSVIAttributeToFill(); 
  +                    DatatypeValidator * attrDataType = actualAttDef->getDatatypeValidator();
  +	                XSSimpleTypeDefinition *validatingType = (XSSimpleTypeDefinition *)fModel->getXSObject(attrDataType);
  +	                if(attrValid != PSVIItem::VALIDITY_VALID)
  +	                {
  +	                    toFill->reset(
  +	                        fRootElemName
  +	                        , attrValid
  +	                        , attrAssessed
  +	                        , normBuf.getRawBuffer()
  +	                        , validatingType
  +	                        , 0
  +	                        , actualAttDef->getValue()
  +	                        , false
  +	                        , attrDecl
  +                            , 0
  +	                    );
  +	                }
  +	                else
  +	                {
  +	                    XSSimpleTypeDefinition *memberType = 0;
  +	                    if(validatingType->getVariety() == XSSimpleTypeDefinition::VARIETY_UNION)
  +	                        memberType = (XSSimpleTypeDefinition *)fModel->getXSObject(attrValidator);
  +	                    toFill->reset(
  +	                        fRootElemName
  +	                        , attrValid
  +	                        , attrAssessed
  +	                        , normBuf.getRawBuffer()
  +	                        , validatingType
  +	                        , memberType
  +	                        , actualAttDef->getValue()
  +	                        , false
  +	                        , attrDecl
  +                            , (memberType)?attrValidator:attrDataType
  +	                    );
  +	                }
  +                }
   	        }
   	    }
           else
  
  
  
  1.63      +40 -37    xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp
  
  Index: SGXMLScanner.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp,v
  retrieving revision 1.62
  retrieving revision 1.63
  diff -u -r1.62 -r1.63
  --- SGXMLScanner.cpp	3 Dec 2003 20:00:27 -0000	1.62
  +++ SGXMLScanner.cpp	8 Dec 2003 00:11:26 -0000	1.63
  @@ -2599,43 +2599,46 @@
   	                actualAttDef = (SchemaAttDef *)attDef;
   	            else if (attDefForWildCard)
   	                actualAttDef = (SchemaAttDef *)attDefForWildCard;
  -	            XSAttributeDeclaration *attrDecl = (XSAttributeDeclaration *)fModel->getXSObject(actualAttDef);
  -	            PSVIAttribute *toFill = fPSVIAttrList->getPSVIAttributeToFill(); 
  -                DatatypeValidator * attrDataType = actualAttDef->getDatatypeValidator();
  -	            XSSimpleTypeDefinition *validatingType = (XSSimpleTypeDefinition *)fModel->getXSObject(attrDataType);
  -	            if(attrValid != PSVIItem::VALIDITY_VALID)
  -	            {
  -	                toFill->reset(
  -	                    fRootElemName
  -	                    , attrValid
  -	                    , attrAssessed
  -	                    , normBuf.getRawBuffer()
  -	                    , validatingType
  -	                    , 0
  -	                    , actualAttDef->getValue()
  -	                    , false
  -	                    , attrDecl
  -                        , 0
  -	                );
  -	            }
  -	            else
  -	            {
  -	                XSSimpleTypeDefinition *memberType = 0;
  -	                if(validatingType->getVariety() == XSSimpleTypeDefinition::VARIETY_UNION)
  -	                    memberType = (XSSimpleTypeDefinition *)fModel->getXSObject(attrValidator);
  -	                toFill->reset(
  -	                    fRootElemName
  -	                    , attrValid
  -	                    , attrAssessed
  -	                    , normBuf.getRawBuffer()
  -	                    , validatingType
  -	                    , memberType
  -	                    , actualAttDef->getValue()
  -	                    , false
  -	                    , attrDecl
  -                        , (memberType)?attrValidator:attrDataType
  -	                );
  -	            }
  +                if(actualAttDef)
  +                {
  +	                XSAttributeDeclaration *attrDecl = (XSAttributeDeclaration *)fModel->getXSObject(actualAttDef);
  +	                PSVIAttribute *toFill = fPSVIAttrList->getPSVIAttributeToFill(); 
  +                    DatatypeValidator * attrDataType = actualAttDef->getDatatypeValidator();
  +	                XSSimpleTypeDefinition *validatingType = (XSSimpleTypeDefinition *)fModel->getXSObject(attrDataType);
  +	                if(attrValid != PSVIItem::VALIDITY_VALID)
  +	                {
  +	                    toFill->reset(
  +	                        fRootElemName
  +	                        , attrValid
  +	                        , attrAssessed
  +	                        , normBuf.getRawBuffer()
  +	                        , validatingType
  +	                        , 0
  +	                        , actualAttDef->getValue()
  +	                        , false
  +	                        , attrDecl
  +                            , 0
  +	                    );
  +	                }
  +	                else
  +	                {
  +	                    XSSimpleTypeDefinition *memberType = 0;
  +	                    if(validatingType->getVariety() == XSSimpleTypeDefinition::VARIETY_UNION)
  +	                        memberType = (XSSimpleTypeDefinition *)fModel->getXSObject(attrValidator);
  +	                    toFill->reset(
  +	                        fRootElemName
  +	                        , attrValid
  +	                        , attrAssessed
  +	                        , normBuf.getRawBuffer()
  +	                        , validatingType
  +	                        , memberType
  +	                        , actualAttDef->getValue()
  +	                        , false
  +	                        , attrDecl
  +                            , (memberType)?attrValidator:attrDataType
  +	                    );
  +	                }
  +                }
   	        }
           }
           else
  
  
  

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