neilg       2003/12/19 22:21:34

  Modified:    c/src/xercesc/util XMLAbstractDoubleFloat.cpp
  Log:
  fix canonical representation production
  
  Revision  Changes    Path
  1.21      +17 -4     xml-xerces/c/src/xercesc/util/XMLAbstractDoubleFloat.cpp
  
  Index: XMLAbstractDoubleFloat.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLAbstractDoubleFloat.cpp,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- XMLAbstractDoubleFloat.cpp        17 Dec 2003 00:18:35 -0000      1.20
  +++ XMLAbstractDoubleFloat.cpp        20 Dec 2003 06:21:34 -0000      1.21
  @@ -57,6 +57,9 @@
   /*
    * $Id$
    * $Log$
  + * Revision 1.21  2003/12/20 06:21:34  neilg
  + * fix canonical representation production
  + *
    * Revision 1.20  2003/12/17 00:18:35  cargilld
    * Update to memory management so that the static memory manager (one used to call 
Initialize) is only for static data.
    *
  @@ -498,6 +501,15 @@
   XMLCh* XMLAbstractDoubleFloat::getCanonicalRepresentation(const XMLCh*         
const rawData
                                                           ,       MemoryManager* 
const memMgr)
   {
  +    // before anything, let's look for special tokens since that
  +    // breaks the calls to parse below.
  +    if(XMLString::equals(rawData, XMLUni::fgNegINFString)
  +            || XMLString::equals(rawData, XMLUni::fgPosINFString)
  +            || XMLString::equals(rawData, XMLUni::fgNaNString))
  +    {
  +        return XMLString::replicate(rawData, memMgr);
  +    }
  +
       int    strLen = XMLString::stringLen(rawData);
       XMLCh* manStr = (XMLCh*) memMgr->allocate((strLen + 1) * sizeof(XMLCh));
       ArrayJanitor<XMLCh> janManStr(manStr, memMgr);
  @@ -507,10 +519,11 @@
       XMLCh* expStr = (XMLCh*) memMgr->allocate((strLen + 1) * sizeof(XMLCh));
       ArrayJanitor<XMLCh> janExp(expStr, memMgr);
   
  +    XMLCh* retBuffer = (XMLCh*) memMgr->allocate((strLen + 8) * sizeof(XMLCh));
  +    retBuffer[0] = 0;
  +
       int sign, totalDigits, fractDigits;
       int expValue = 0;
  -
  -    XMLCh* retBuffer = (XMLCh*) memMgr->allocate((strLen + 8) * sizeof(XMLCh));
   
       const XMLCh* ePosition = XMLString::findAny(rawData, expSign);
   
  
  
  

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

Reply via email to