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]

Reply via email to