dbertoni    02/04/18 22:33:42

  Modified:    c/src/XSLT StylesheetExecutionContextDefault.cpp
                        XResultTreeFrag.cpp
  Log:
  Safer dereference handling.
  
  Revision  Changes    Path
  1.89      +13 -4     
xml-xalan/c/src/XSLT/StylesheetExecutionContextDefault.cpp
  
  Index: StylesheetExecutionContextDefault.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/XSLT/StylesheetExecutionContextDefault.cpp,v
  retrieving revision 1.88
  retrieving revision 1.89
  diff -u -r1.88 -r1.89
  --- StylesheetExecutionContextDefault.cpp     18 Apr 2002 04:52:57 -0000      
1.88
  +++ StylesheetExecutionContextDefault.cpp     19 Apr 2002 05:33:42 -0000      
1.89
  @@ -110,6 +110,13 @@
   
   
   
  +//#define XALAN_VQ_SPECIAL_TRACE
  +#if defined(XALAN_VQ_SPECIAL_TRACE)
  +#include "C:/Program Files/Rational/Quantify/pure.h"
  +#endif
  +
  +
  +
   StylesheetExecutionContextDefault::XalanNumberFormatFactory                  
StylesheetExecutionContextDefault::s_defaultXalanNumberFormatFactory;
   
   StylesheetExecutionContextDefault::XalanNumberFormatFactory*         
StylesheetExecutionContextDefault::s_xalanNumberFormatFactory =
  @@ -1127,15 +1134,17 @@
   {
        assert(theXResultTreeFrag != 0);
   
  -     ResultTreeFragBase* const       theResultTreeFragBase =
  -             theXResultTreeFrag->release();
  -
  -     if (m_xresultTreeFragAllocator.destroy(theXResultTreeFrag) == false)
  +     if (m_xresultTreeFragAllocator.ownsObject(theXResultTreeFrag) == false)
        {
                return false;
        }
        else
        {
  +             ResultTreeFragBase* const       theResultTreeFragBase =
  +                     theXResultTreeFrag->release();
  +
  +             m_xresultTreeFragAllocator.destroy(theXResultTreeFrag);
  +
                ResultTreeFrag* const   theResultTreeFrag =
   #if defined(XALAN_OLD_STYLE_CASTS)
                        (ResultTreeFrag*)theResultTreeFragBase;
  
  
  
  1.4       +3 -6      xml-xalan/c/src/XSLT/XResultTreeFrag.cpp
  
  Index: XResultTreeFrag.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/XResultTreeFrag.cpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XResultTreeFrag.cpp       11 Apr 2002 05:54:50 -0000      1.3
  +++ XResultTreeFrag.cpp       19 Apr 2002 05:33:42 -0000      1.4
  @@ -340,12 +340,9 @@
   void
   XResultTreeFrag::dereferenced()
   {
  -     if (m_executionContext != 0)
  -     {
  -             // We're dead after we call this...
  -             m_executionContext->returnXResultTreeFrag(this);
  -     }
  -     else
  +     if (m_executionContext == 0 ||
  +             // We're dead after we call this, if it returns true;
  +             m_executionContext->returnXResultTreeFrag(this) == false)
        {
                delete m_value;
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to