knoaman     2004/09/28 17:07:40

  Modified:    c/src/xercesc/internal IGXMLScanner2.cpp SGXMLScanner.cpp
  Log:
  Fix for bug 1197. Disallow validating attributes when xsi:type is simple.
  
  Revision  Changes    Path
  1.73      +9 -2      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.72
  retrieving revision 1.73
  diff -u -r1.72 -r1.73
  --- IGXMLScanner2.cpp 28 Sep 2004 21:27:38 -0000      1.72
  +++ IGXMLScanner2.cpp 29 Sep 2004 00:07:40 -0000      1.73
  @@ -83,8 +83,15 @@
       // know what's best.  REVISIT:  don't modify grammar at all; eliminate
       // this step...
       ComplexTypeInfo *currType = 0;
  +    DatatypeValidator *currDV = 0;
       if(fGrammar->getGrammarType() == Grammar::SchemaGrammarType && fValidate)
  +    {
           currType = ((SchemaValidator*)fValidator)->getCurrentTypeInfo();
  +        if (!currType) {
  +            currDV = ((SchemaValidator*)fValidator)->getCurrentDatatypeValidator();
  +        }
  +    }
  +
       const bool hasDefs = (currType && fValidate)
               ? currType->resetDefs()
               : elemDecl->resetDefs();
  @@ -199,7 +206,7 @@
                       attDef = currType->getAttDef(suffPtr, uriId);
                       attWildCard = currType->getAttWildCard();
                   }
  -                else { // check explicitly-set wildcard
  +                else if (!currDV) { // check explicitly-set wildcard
                       attWildCard = ((SchemaElementDecl*)elemDecl)->getAttWildCard();
                   }
   
  
  
  
  1.97      +13 -5     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.96
  retrieving revision 1.97
  diff -u -r1.96 -r1.97
  --- SGXMLScanner.cpp  27 Sep 2004 21:04:38 -0000      1.96
  +++ SGXMLScanner.cpp  29 Sep 2004 00:07:40 -0000      1.97
  @@ -2084,9 +2084,17 @@
       //  Ask the element to clear the 'provided' flag on all of the att defs
       //  that it owns, and to return us a boolean indicating whether it has
       //  any defs.
  -    ComplexTypeInfo *currType = (fValidate)
  -                ?((SchemaValidator*)fValidator)->getCurrentTypeInfo()
  -                :0;
  +    DatatypeValidator *currDV = 0;
  +    ComplexTypeInfo *currType = 0;
  +
  +    if (fValidate)
  +    {
  +        currType = ((SchemaValidator*)fValidator)->getCurrentTypeInfo();
  +        if (!currType) {
  +            currDV = ((SchemaValidator*)fValidator)->getCurrentDatatypeValidator();
  +        }
  +    }
  +
       const bool hasDefs = (currType && fValidate) 
               ? currType->resetDefs()
               : elemDecl->resetDefs();
  @@ -2191,7 +2199,7 @@
                       attDef = currType->getAttDef(suffPtr, uriId);
                       attWildCard = currType->getAttWildCard();
                   }
  -                else { // check explicitly-set wildcard
  +                else if (!currDV) { // check explicitly-set wildcard
                       attWildCard = ((SchemaElementDecl*)elemDecl)->getAttWildCard();
                   }
   
  
  
  

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

Reply via email to