--- Begin Message ---
Subject: |
Stack overflow in reftex-parse-all |
Date: |
Fri, 11 Dec 2015 22:03:24 +0100 |
Dear all,
I encounter the error "Stack overflow in regexp matcher" if I apply the
function reftex-parse-all to the following file:
\documentclass{article}
\begin{document}
[\}
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
...
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
\end{document}
Here ... stands for 500 copies of the line above. The file can be
compiled successfully with pdflatex.
I am using the Debian packages emacs24 24.5+1-3 and auctex 11.88-1.1.
The same error also occurs with different versions.
In case you are wondering, the non-matching brackets [\} appear for
example in physics as so-called "super Lie brackets".
Best
Nils
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#22146: Stack overflow in reftex-parse-all |
Date: |
Sun, 13 Dec 2015 19:55:22 +0100 |
User-agent: |
Gnus/5.130014 (Ma Gnus v0.14) Emacs/25.0.50 (gnu/linux) |
David Kastrup <address@hidden> writes:
>> Isn't the syntax "\\[[^]]\\{0,1000\\}\\<label"? I tried going up to
>> a maximum of 30000 and it still didn't overflow, so I think that's an
>> appropriate fix (say, maybe 2000 instead of 1000 to be extra safe).
>> Feel free to change `reftex-label-regexps' accordingly.
>>
>> Interestingly, "x\\{0,40000\\}" gives an error:
>>
>> (invalid-regexp "Invalid content of \\{\\}")
>>
>> So there seems to be a (pretty random) limit...
>
> I'd guess that the regexp library translates this into a "short", so
> the limit would be SHORT_MAX, namely 32767.
(re-search-forward "x\\{0,32767\\}") => works
(re-search-forward "x\\{0,32768\\}") => error
Yup, of course you're right.
Anyway, I'm closing this bug with the recent emacs/reftex commit which
looks at a label=... at most 2000 chars after the opening [.
Bye,
Tassilo
--- End Message ---