Yes, I think I just took the easy way out :-) I did recognize the fact
that we should have the variable around as a state variable. Let me look
into this a little more.
Nadir K. Amra
Kamlesh kumar <[EMAIL PROTECTED]> wrote on 08/12/2006 01:38:42 PM:
> Hey,
> Thanks for providing the fix. Its better than before
> but I see that there might still be some issues with
> the new code. The problem is that the previous value
> of bCanParseMore is lost when the next time someone
> invokes next() function on XMLParserXerces and so it
> can cause the program to crash. (Currently, we assume
> that its always ok to call the m_pParser->next the
> first time, however its not a safe assumption. There
> are places in SoapDeSerializer where in we ignore the
> return value of next and so no way of knowing that we
> have reached the end of stream)
>
> If we have bCanParseMore as a class member variable
> then we can avoid this issue. This value can be
> initialized with the return value of
> m_parser->parseFirst.
>
> Let me know if I am not clear and I can try to provide
> more details.
>
> Thanks
> -Kamlesh
>
>
>
>
>
>
>
> --- Nadir Amra <[EMAIL PROTECTED]> wrote:
>
> > I have fixed this problem. See AXISCPP-770 for
> > details. Please try and
> > see if your problem persists by downloading code and
> > testing.
> >
> > Nadir K. Amra
> >
> >
> > Kamlesh kumar <[EMAIL PROTECTED]> wrote on
> > 08/11/2006 09:41:21 PM:
> >
> > > The current implementation of XMLParserXerces
> > ignores
> > > the value returned by the parseNext() call, this
> > > causes the program to crash the next time
> > parseNext()
> > > is called.
> > >
> > > Here is a sample code inside the peek function
> > > illustrating the problem.
> > >
> > > AnyElement* elem = m_Xhandler.getAnyElement();
> > > while (CHARACTER_ELEMENT == elem->m_type)
> > /
> > > { /* ignorable white space */
> > > m_Xhandler.freeElement();
> > > bCanParseMore =
> > > m_pParser->parseNext(m_ScanToken);
> > > elem = m_Xhandler.getAnyElement();
> > > }
> > >
> > > It has two problems one it ignores the value of
> > > bCanParseMore and secondly it doesn't check if
> > elem is
> > > null or not before entering the while loop again.
> > >
> > > Ideally, once the parser returns a value of
> > > false(indicating the end of stream) we shouldn't
> > be
> > > calling parseNext() function. I think it would be
> > > better to have a class member variable called
> > > m_bCanParseMore which we check before making any
> > call
> > > to parseNext function. This would avoid the
> > problem.
> > >
> > > I run into this situation more often as I am using
> > the
> > > SoapDeSerializer API directly. I see someone else
> > have
> > > also faced this problem
> > >
> >
> http://mail-archives.apache.org/mod_mbox/ws-axis-c-dev/200507.mbox/%
> > >
> >
> [EMAIL PROTECTED]
> > >
> > > Can someone take a look into XMLParserXerces.cpp
> > and
> > > fix this problem ?
> > >
> >
> >
> >
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail:
> > [EMAIL PROTECTED]
> > For additional commands, e-mail:
> > [EMAIL PROTECTED]
> >
> >
>
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]