You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by pe...@apache.org on 2004/03/19 02:15:55 UTC

cvs commit: xml-xerces/c/src/xercesc/util XMLBigDecimal.cpp

peiyongz    2004/03/18 17:15:55

  Modified:    c/src/xercesc/util XMLBigDecimal.cpp
  Log:
  store/load fRawData
  
  Revision  Changes    Path
  1.22      +35 -14    xml-xerces/c/src/xercesc/util/XMLBigDecimal.cpp
  
  Index: XMLBigDecimal.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLBigDecimal.cpp,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- XMLBigDecimal.cpp	13 Jan 2004 19:50:56 -0000	1.21
  +++ XMLBigDecimal.cpp	19 Mar 2004 01:15:55 -0000	1.22
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.22  2004/03/19 01:15:55  peiyongz
  + * store/load fRawData
  + *
    * Revision 1.21  2004/01/13 19:50:56  peiyongz
    * remove parseContent()
    *
  @@ -188,7 +191,8 @@
           (
               ((fRawDataLen*2) + 2) * sizeof(XMLCh) //fRawData and fIntVal
           );
  -        memcpy(fRawData, strValue, (fRawDataLen+1) * sizeof(XMLCh));
  +        memcpy(fRawData, strValue, fRawDataLen * sizeof(XMLCh));
  +        fRawData[fRawDataLen] = chNull;
           fIntVal = fRawData + fRawDataLen + 1;
           parseDecimal(strValue, fIntVal, fSign, (int&) fTotalDigits, (int&) fScale, fMemoryManager);
       }
  @@ -210,9 +214,6 @@
   
   void XMLBigDecimal::cleanUp()
   {
  -//    if (fIntVal)
  -//        fMemoryManager->deallocate(fIntVal); //delete [] fIntVal;
  -
       if (fRawData)
           fMemoryManager->deallocate(fRawData); //XMLString::release(&fRawData);
   }
  @@ -222,18 +223,19 @@
       fScale = fTotalDigits = 0;
       unsigned int valueLen = XMLString::stringLen(strValue);
   
  -    if (valueLen > fRawDataLen) {
  -
  +    if (valueLen > fRawDataLen)
  +    {
           fMemoryManager->deallocate(fRawData);
  -        fRawDataLen = valueLen;
           fRawData = (XMLCh*) fMemoryManager->allocate
           (
  -            ((fRawDataLen*2) + 2) * sizeof(XMLCh)
  +            ((valueLen * 2) + 4) * sizeof(XMLCh)
           );//XMLString::replicate(strValue, fMemoryManager);
  -        fIntVal = fRawData + fRawDataLen + 1;
       }
   
  -    memcpy(fRawData, strValue, (valueLen + 1) * sizeof(XMLCh));
  +    memcpy(fRawData, strValue, valueLen * sizeof(XMLCh));
  +    fRawData[valueLen] = chNull;
  +    fRawDataLen = valueLen;
  +    fIntVal = fRawData + fRawDataLen + 1;
       parseDecimal(strValue, fIntVal, fSign, (int&) fTotalDigits, (int&) fScale, fMemoryManager);
   
   }
  @@ -509,7 +511,6 @@
           serEng<<fSign;
           serEng<<fTotalDigits;
           serEng<<fScale;
  -        serEng<<fRawDataLen;   // we purposely write this seperatly
   
           serEng.writeString(fRawData);
           serEng.writeString(fIntVal);
  @@ -520,10 +521,30 @@
           serEng>>fSign;
           serEng>>fTotalDigits;
           serEng>>fScale;
  -        serEng>>fRawDataLen;
   
  -        serEng.readString(fRawData);
  -        serEng.readString(fIntVal);
  +        XMLCh* rawdataStr;
  +        serEng.readString(rawdataStr);
  +        ArrayJanitor<XMLCh> rawdataName(rawdataStr, serEng.getMemoryManager());
  +        fRawDataLen = XMLString::stringLen(rawdataStr);
  +
  +        XMLCh* intvalStr;
  +        serEng.readString(intvalStr);
  +        ArrayJanitor<XMLCh> intvalName(intvalStr, serEng.getMemoryManager());
  +        unsigned int intvalStrLen = XMLString::stringLen(intvalStr);
  +
  +        if (fRawData)
  +            fMemoryManager->deallocate(fRawData);
  +
  +        fRawData = (XMLCh*) fMemoryManager->allocate
  +        (
  +            ((fRawDataLen + intvalStrLen) + 4) * sizeof(XMLCh)
  +        );
  +
  +        memcpy(fRawData, rawdataStr, fRawDataLen * sizeof(XMLCh));
  +        fRawData[fRawDataLen] = chNull;
  +        fIntVal = fRawData + fRawDataLen + 1;
  +        memcpy(fIntVal, intvalStr,  intvalStrLen * sizeof(XMLCh));
  +        fIntVal[intvalStrLen] = chNull;
   
       }
   
  
  
  

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