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/30 07:01:20 UTC

cvs commit: xml-xerces/c/src/xercesc/validators/schema SchemaValidator.cpp

neilg       2003/12/29 22:01:20

  Modified:    c/src/xercesc/validators/schema SchemaValidator.cpp
  Log:
  fix segfault when validation of a union type fails
  
  Revision  Changes    Path
  1.51      +16 -10    xml-xerces/c/src/xercesc/validators/schema/SchemaValidator.cpp
  
  Index: SchemaValidator.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaValidator.cpp,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- SchemaValidator.cpp	24 Dec 2003 15:24:16 -0000	1.50
  +++ SchemaValidator.cpp	30 Dec 2003 06:01:20 -0000	1.51
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.51  2003/12/30 06:01:20  neilg
  + * fix segfault when validation of a union type fails
  + *
    * Revision 1.50  2003/12/24 15:24:16  cargilld
    * More updates to memory management so that the static memory manager.
    *
  @@ -733,15 +736,18 @@
               DatatypeValidator *memberDTV = context->getValidatingMemberType();
               // actual type for DOMTypeInfo is memberDTV
               fMostRecentAttrValidator = memberDTV;
  -            DatatypeValidator::ValidatorType memberDTVType = memberDTV->getType();
  -            if (memberDTVType == DatatypeValidator::ID) {
  -                thisIsAnId = true;
  -            }
  -            else if (memberDTVType == DatatypeValidator::IDREF) {
  -                // if in prevalidatoin, do not add attDef to IDREFList
  -                if (preValidation)
  -                    getScanner()->getValidationContext()->toCheckIdRefList(false);
  -
  +            // no member datatype validator if there was an error
  +            if(memberDTV)
  +            {
  +                DatatypeValidator::ValidatorType memberDTVType = memberDTV->getType();
  +                if (memberDTVType == DatatypeValidator::ID) {
  +                    thisIsAnId = true;
  +                }
  +                else if (memberDTVType == DatatypeValidator::IDREF) {
  +                    // if in prevalidatoin, do not add attDef to IDREFList
  +                    if (preValidation)
  +                        getScanner()->getValidationContext()->toCheckIdRefList(false);
  +                }
               }
           }
           else if (attDefDVType == DatatypeValidator::ID) {
  
  
  

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