]> granicus.if.org Git - python/commitdiff
The sre test suite currently overruns the stack on Win64, Linux64, and Monterey
authorTrent Mick <trentm@activestate.com>
Wed, 16 Aug 2000 22:29:55 +0000 (22:29 +0000)
committerTrent Mick <trentm@activestate.com>
Wed, 16 Aug 2000 22:29:55 +0000 (22:29 +0000)
(64-bit AIX) This is because the RECURSION_LIMIT is too low. This patch lowers
to recusion limit to 7500 such that the recusion check fires before a segfault.

Fredrik suggested/approved the fix in private email, modulo sre's recusion
limit checking no being necessary when PyOS_CheckStack is implemented for
Windows.

Modules/_sre.c

index b87282c1191f69b73d048facfe0a815a472aeb86..29e92ac574f9caea60df8bcec14d3748ba9daa66 100644 (file)
@@ -58,9 +58,18 @@ char copyright[] = " SRE 0.9.8 Copyright (c) 1997-2000 by Secret Labs AB ";
 /* -------------------------------------------------------------------- */
 /* optional features */
 
-/* prevent run-away recursion (bad patterns on long strings) */
+/* prevent run-away recursion (bad patterns on long strings)
+   Require a smaller recursion limit for a number of 64-bit platforms
+   to prevent stack overflow:
+    Win64 - MS_WIN64, Linux64 - __LP64__, Monterey (64-bit AIX) - _LP64
+   XXX Or maybe this should be defined for all SIZEOF_VOIDP>4 platforms?
+*/
 #if !defined(USE_STACKCHECK)
-#define USE_RECURSION_LIMIT 10000
+#      if defined(MS_WIN64) || defined(__LP64__) || defined(_LP64)
+#              define USE_RECURSION_LIMIT 7500
+#      else
+#              define USE_RECURSION_LIMIT 10000
+#      endif
 #endif
 
 /* enables fast searching */