Re: [xml] bug 362989




Ok. I actually have been trying to understand/debug this issue. This
problem doesn't show up when the file is not big enough.

It's due to xmlFAReduceEpsilonTransitions (in xmlregexp.c) calling
itself (recursively) infinitely. In this function, at line 1623 (or so),
you have code:

      if ( to->trans[transnr].counter>=0 )
          xmlFAReduceEpsilonTransitions(ctxt, fromnr,
                             to->trans[transnr].to,
                             to->trans[transnr].counter);
      else
          xmlFAReduceEpsilonTransitions(ctxt, fromnr,
                             to->trans[transnr].to,
                             counter);


When the problem happens, normally "to->trans[transnr].counter" is -1,
so the 2nd part of the code is executed. But actually the "counter" also
has a value of -1, so there's no difference between 1st or 2nd part of
the code. Is it a problem? (during my debug, I see the loop happens here
with both to->trans[transnr].counter and counter being -1).

I tried to change the code so when it executes the 2nd part, it also
checks "if counter>=0" on "else" line, as following:

      if ( to->trans[transnr].counter>=0 )
          xmlFAReduceEpsilonTransitions(ctxt, fromnr,
                             to->trans[transnr].to,
                             to->trans[transnr].counter);
      else if ( counter>=0 )
          xmlFAReduceEpsilonTransitions(ctxt, fromnr,
                             to->trans[transnr].to,
                             counter);

But it seems the program terminates too early.

Do you have any document regarding the purpose/design of this
file/function that can help me understand it better?

Thanks,
Yong Chen


On Mon, Oct 30, 2006 at 02:42:37PM -0800, Yong Chen (yongche) wrote:

Hi Daniel,

Do you have an update on bug 362989?

  No. Kasimier has disapeared, the schemas is still 10 pages long i.e.
it looks like it will take time to dig into that bug, and I had many
other
bugs looking simpler to try to fix before the release, independantly of
my
work duties, so I didn't had time to look at it yet.

Daniel



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]