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]