GNU bug report logs -
#7227
re-search-forward goes infinite loop with dash inside []
Previous Next
Reported by: Jari Aalto <jari.aalto <at> cante.net>
Date: Sat, 16 Oct 2010 09:13:02 UTC
Severity: normal
Found in version 23.2+1-4
Done: Jari Aalto <jari.aalto <at> cante.net>
Bug is archived. No further changes may be made.
Full log
Message #17 received at 7227 <at> debbugs.gnu.org (full text, mbox):
Jari Aalto <jari.aalto <at> cante.net> writes:
> Hm. The test case needs adjustment:
>
> ;; (1) Run C-x C-e, works:
>
> (re-search-forward "^\\([a-z0-9.-]+\\)+[ \t]+\\([0-9]+\\) +\\([a-z].*\\)")
> row2 1234 rest of line
>
> ;; (2) but C-x C-e below causes a loop
>
> (re-search-forward "^\\([a-z0-9.-]+\\)+[ \t]+\\([0-9]+\\) +\\([a-z].*\\)")
> ------------------------------------------------------------------------
> row2 1234 rest of line
>
>> Note that nested repetitions like \([...]+\)+ are bad in any case.
>
> This was only a test. The anchor "^" should help, and I assume the first
> '[a-z0-9.-]+' should be greedy, so it shouldn't take that long to
> resolve.
Not in the non-matching case. When the match against the dash line is
tried you get quadratic behaviour due to explosion of the search tree.
Andreas.
--
Andreas Schwab, schwab <at> linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
This bug report was last modified 14 years and 275 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.