On Tue, 22 Apr 2003, Gary Herron wrote: > On Tuesday 22 April 2003 01:27 am, Andrew MacIntyre wrote: {...} > > The actual test case from test_sre that fails is: > > ---8<---8<--- > > # non-simple '*?' still recurses and hits the recursion limit > > test(r"""sre.search('(a|b)*?c', 10000*'ab'+'cd').end(0)""", None, > > RuntimeError) ---8<---8<--- {...} > Ah. Good clue! Here's a very likely fix to that problem. Around > line 3102 of _sre.c find the line that sets USE_RECURSION_LIMIT. > Depending on you platform it will be set to either 10000 or 7500. As > a test, lower that value to 1000 or even 100. If all the tests pass, > then we know the culprit. The magic number for USE_RECURSION_LIMIT is between 9250 & 9500. Note that this is for gcc 3.2.2 on FreeBSD 4.7. For gcc 3.2.1 on OS/2, 9250 is too high, but 7500 lets test_sre complete. If the above test case is commented out, the "Test engine limitations" test case section fails at the same USE_RECURSION_LIMIT settings as the above test case. I'll prepare a patch to supercede 725024 which sets USE_RECURSION_LIMIT to 7500 on FreeBSD & OS/2 with gcc 3.x, but I won't get to it for a day or two. I'll assign it to Gustavo. -- Andrew I MacIntyre "These thoughts are mine alone..." E-mail: andymac@bullseye.apana.org.au | Snail: PO Box 370 andymac@pcug.org.au | Belconnen ACT 2616 Web: http://www.andymac.org/ | Australia
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4