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]