bug-texinfo
[Top][All Lists]
Advanced

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

Re: (info-stnd) search.c:regexp_search() finishes too early


From: Gavin Smith
Subject: Re: (info-stnd) search.c:regexp_search() finishes too early
Date: Fri, 7 Feb 2014 02:27:15 +0000

On Thu, Jan 9, 2014 at 9:53 PM, Sergey Poznyakoff <address@hidden> wrote:
> Hi Gavin,
>
> Thanks a lot for the report and the testcase.  I have fixed the bug
> in the repository.  For your convenience, the patch is attached.
> Please let me know if it works for you.
>
> Regards,
> Sergey
>
I am having some problems using this on long files or files with a lot
of matches. I am trying to find cross-references or menu items in
files. I have a split Texinfo manual installed and whenever I open the
subfile including the indices it takes several minutes to do so,
because its indices have thousands of entries. These lines were added:

+  if (previous_content != binding->buffer ||
+      previous_start != start ||
+      previous_end != end)

>From what I can tell, anytime anything changes in the binding
argument, all the work done by the last call to regexp_search() is
thrown away. This includes the common case of keeping binding->buffer
and binding->end constant and continually increasing binding->start.
If as I suspect it is calculating all the matches every time, instead
of just the first one, looping through all the matches is quadratic in
the number of matches (i.e., for n matches, it would calculate n +
(n-1) + (n-2) + ... + 2 + 1 matches).



reply via email to

[Prev in Thread] Current Thread [Next in Thread]