]> granicus.if.org Git - python/commitdiff
+ if USE_STACKCHECK is defined, use PyOS_CheckStack to look
authorFredrik Lundh <fredrik@pythonware.com>
Mon, 7 Aug 2000 17:33:38 +0000 (17:33 +0000)
committerFredrik Lundh <fredrik@pythonware.com>
Mon, 7 Aug 2000 17:33:38 +0000 (17:33 +0000)
  for excessive recursion.

Modules/_sre.c

index d3841d5c68366cf472b65db7b824a0da05ece101..8add74e4225b8e93341e64fd64050cf557273b18 100644 (file)
@@ -58,7 +58,9 @@ 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) */
+#if !defined(USE_STACKCHECK)
 #define USE_RECURSION_LIMIT 10000
+#endif
 
 /* enables fast searching */
 #define USE_FAST_SEARCH
@@ -527,6 +529,11 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern, int level)
 
     TRACE(("%8d: enter %d\n", PTR(ptr), level));
 
+#if defined(USE_STACKCHECK)
+    if (level % 10 == 0 && PyOS_CheckStack()) {
+        return SRE_ERROR_RECURSION_LIMIT;
+#endif
+
 #if defined(USE_RECURSION_LIMIT)
     if (level > USE_RECURSION_LIMIT)
         return SRE_ERROR_RECURSION_LIMIT;