summaryrefslogtreecommitdiffstats
path: root/Modules/_sre.c
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/_sre.c')
-rw-r--r--Modules/_sre.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/Modules/_sre.c b/Modules/_sre.c
index d3841d5..8add74e 100644
--- a/Modules/_sre.c
+++ b/Modules/_sre.c
@@ -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;