peiyongz 2004/08/13 14:29:21 Modified: c/src/xercesc/framework/psvi XSValue.hpp XSValue.cpp Log: fMemAllocated Revision Changes Path 1.4 +6 -2 xml-xerces/c/src/xercesc/framework/psvi/XSValue.hpp Index: XSValue.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/psvi/XSValue.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- XSValue.hpp 12 Aug 2004 14:24:34 -0000 1.3 +++ XSValue.hpp 13 Aug 2004 21:29:20 -0000 1.4 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.4 2004/08/13 21:29:20 peiyongz + * fMemAllocated + * * Revision 1.3 2004/08/12 14:24:34 peiyongz * HP aCC A.03 * @@ -464,7 +467,8 @@ // ----------------------------------------------------------------------- // data members // ----------------------------------------------------------------------- - MemoryManager* fMemoryManager; + bool fMemAllocated; + MemoryManager* fMemoryManager; }; 1.3 +30 -8 xml-xerces/c/src/xercesc/framework/psvi/XSValue.cpp Index: XSValue.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/psvi/XSValue.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XSValue.cpp 11 Aug 2004 17:06:44 -0000 1.2 +++ XSValue.cpp 13 Aug 2004 21:29:21 -0000 1.3 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.3 2004/08/13 21:29:21 peiyongz + * fMemAllocated + * * Revision 1.2 2004/08/11 17:06:44 peiyongz * Do not panic if can't create RegEx * @@ -231,14 +234,14 @@ // XSValue: Constructors and Destructor // --------------------------------------------------------------------------- XSValue::XSValue(MemoryManager* const manager) -:fMemoryManager(manager) +:fMemAllocated(false) +,fMemoryManager(manager) { - fData.f_strVal = 0; } XSValue::~XSValue() { - if (fData.f_strVal) + if (fMemAllocated) fMemoryManager->deallocate(fData.f_strVal); } @@ -971,17 +974,35 @@ if (context.getValidation() && !validateNumerics(content, datatype, context, manager)) return 0; + XMLCh* retVal; + if (datatype == XSValue::dt_decimal) { - return XMLBigDecimal::getCanonicalRepresentation(content, manager); + retVal = XMLBigDecimal::getCanonicalRepresentation(content, manager); + + if (!retVal) + context.fStatus = XSValueContext::st_InvalidChar; + + return retVal; + } else if (datatype == XSValue::dt_float || datatype == XSValue::dt_double ) { - return XMLAbstractDoubleFloat::getCanonicalRepresentation(content, manager); + retVal = XMLAbstractDoubleFloat::getCanonicalRepresentation(content, manager); + + if (!retVal) + context.fStatus = XSValueContext::st_InvalidChar; + + return retVal; } else { - return XMLBigInteger::getCanonicalRepresentation(content, manager); + retVal = XMLBigInteger::getCanonicalRepresentation(content, manager); + + if (!retVal) + context.fStatus = XSValueContext::st_InvalidChar; + + return retVal; } } @@ -1555,6 +1576,7 @@ XSValue* retVal = new (manager) XSValue(manager); retVal->fData.f_strVal = decodedData; + retVal->fMemAllocated = true; return retVal; } break;
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]