dbertoni 2002/09/26 13:58:14
Modified: c/src/XalanEXSLT XalanEXSLTCommon.cpp
XalanEXSLTCommonImpl.hpp XalanEXSLTString.cpp
XalanEXSLTStringImpl.hpp
Log:
Make sure static instances used for start-up do not allocate any memory.
Revision Changes Path
1.3 +13 -1 xml-xalan/c/src/XalanEXSLT/XalanEXSLTCommon.cpp
Index: XalanEXSLTCommon.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XalanEXSLT/XalanEXSLTCommon.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- XalanEXSLTCommon.cpp 23 Aug 2002 21:56:02 -0000 1.2
+++ XalanEXSLTCommon.cpp 26 Sep 2002 20:58:14 -0000 1.3
@@ -155,6 +155,15 @@
const XObjectArgVectorType& args,
const Locator*
locator) const
{
+ // Make sure nothing's happened to our strings and that
+ // they were actually initialized...
+ assert(XalanDOMString::equals(m_boolean, s_booleanString) == true);
+ assert(XalanDOMString::equals(m_external, s_externalString) == true);
+ assert(XalanDOMString::equals(m_nodeSet, s_nodeSetString) == true);
+ assert(XalanDOMString::equals(m_number, s_numberString) == true);
+ assert(XalanDOMString::equals(m_rtf, s_rtfString) == true);
+ assert(XalanDOMString::equals(m_string, s_stringString) == true);
+
if (args.size() != 1)
{
executionContext.error(getError(), context, locator);
@@ -269,7 +278,10 @@
static const XalanEXSLTFunctionNodeSet s_nodesetFunction;
-static const XalanEXSLTFunctionObjectType s_objectTypeFunction;
+// Note this is a special constructor of XalanEXSLTFunctionObjectType which
+// allocates no memory. It is only used here, so we can have table-based
+// initialization, but not have any memory allocation.
+static const XalanEXSLTFunctionObjectType s_objectTypeFunction(1);
1.2 +12 -0 xml-xalan/c/src/XalanEXSLT/XalanEXSLTCommonImpl.hpp
Index: XalanEXSLTCommonImpl.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XalanEXSLT/XalanEXSLTCommonImpl.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- XalanEXSLTCommonImpl.hpp 26 Apr 2002 06:51:13 -0000 1.1
+++ XalanEXSLTCommonImpl.hpp 26 Sep 2002 20:58:14 -0000 1.2
@@ -136,6 +136,18 @@
{
}
+ // A dummy constructor for use internally. Do not use this one!!!!
+ XalanEXSLTFunctionObjectType(int /* theDummy */) :
+ Function(),
+ m_boolean(),
+ m_external(),
+ m_nodeSet(),
+ m_number(),
+ m_rtf(),
+ m_string()
+ {
+ }
+
virtual
~XalanEXSLTFunctionObjectType()
{
1.5 +6 -1 xml-xalan/c/src/XalanEXSLT/XalanEXSLTString.cpp
Index: XalanEXSLTString.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XalanEXSLT/XalanEXSLTString.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- XalanEXSLTString.cpp 24 Sep 2002 23:50:42 -0000 1.4
+++ XalanEXSLTString.cpp 26 Sep 2002 20:58:14 -0000 1.5
@@ -254,6 +254,8 @@
const XObjectArgVectorType& args,
const Locator*
locator) const
{
+ assert(m_space.length() == 1);
+
const XObjectArgVectorType::size_type theSize = args.size();
if (theSize != 1 && theSize != 2)
@@ -383,7 +385,10 @@
static const XalanEXSLTFunctionAlign s_alignFunction;
static const XalanEXSLTFunctionConcat s_concatFunction;
-static const XalanEXSLTFunctionPadding s_paddingFunction;
+// Note this is a special constructor of XalanEXSLTFunctionPadding which
+// allocates no memory. It is only used here, so we can have table-based
+// initialization, but not have any memory allocation.
+static const XalanEXSLTFunctionPadding s_paddingFunction(1);
1.2 +7 -0 xml-xalan/c/src/XalanEXSLT/XalanEXSLTStringImpl.hpp
Index: XalanEXSLTStringImpl.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XalanEXSLT/XalanEXSLTStringImpl.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- XalanEXSLTStringImpl.hpp 26 Apr 2002 06:51:13 -0000 1.1
+++ XalanEXSLTStringImpl.hpp 26 Sep 2002 20:58:14 -0000 1.2
@@ -187,6 +187,13 @@
{
}
+ // A dummy constructor for use internally. Do not use this one!!!!
+ XalanEXSLTFunctionPadding(int /* theDummy */) :
+ Function(),
+ m_space()
+ {
+ }
+
virtual
~XalanEXSLTFunctionPadding()
{
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]