You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by Shiva <si...@informix.com> on 2000/08/18 03:18:13 UTC

BUG in FormatterToText.cpp Was[ - Re: runtime error R6025]

At 01:04 PM 8/17/00 -0700, Shiva wrote:
>At 03:59 PM 8/17/00 -0400, Martin Sterman wrote:
>>Yes. Rebuilding TestXSLT
>>rebuilds all the dlls.
>
>Worked for me also, tx a lot.
>
>rgds,
>SHiva

However it doesn't work for different XSL & XML Files, where it
gives the error Runtime R6025.
I debugged it found the problem.

The Problem is in FormatterToText.cpp
FormatterToText::~FormatterToText()
{
         m_pw.flush();
}

m_pw is a reference to the XercesDOMPrintWriter object created in the
client program.

The Destructor of FormatterToText object is called from destructor of
StylesheetExecutionContextDefault object.
StylesheetExecutionContextDefault::~StylesheetExecutionContextDefault()
{
         reset();
}

reset uses a std::for_each traversal to call the dtor of the 
FormatterToText Object

Assuming this is the sequence in which the objects are created
{
         StylesheetExecutionContextDefault       ob1;
         XercesDOMPrintWriter ob2;
}

When the block ends, ob2 is destroyed first. So when ob1 is destroyed, ob2 
is already
invalid. So ob1's destructor calling flush on ob2 objects creates a problem.

The bug is fixed by removing the line
         m_pw.flush();
from the FormatterToText Dtor.

The call is not neccessary because the dtor of the FormatterToText Object 
calls flush in it's dtor.
So the call is redundant anyway.

Is there a mechanism to enter the bug & it's fix ?
Are there any developers active on this list ?

rgds,
Shiva


Version

Posted by Shiva <si...@informix.com>.
The current version of Xalan C++ seems to be 0.40.
Is this a pre-release version ?

Is there any schedule/timeframe for the first Release of
Xalan C++.

rgds.
Shiva