summaryrefslogtreecommitdiffstats
path: root/Modules/_sre.c
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/_sre.c')
-rw-r--r--Modules/_sre.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/Modules/_sre.c b/Modules/_sre.c
index be6920d..3f17d13 100644
--- a/Modules/_sre.c
+++ b/Modules/_sre.c
@@ -72,9 +72,18 @@ static char copyright[] =
/* FIXME: maybe the limit should be 40000 / sizeof(void*) ? */
#define USE_RECURSION_LIMIT 7500
#else
+#if defined(__GNUC__) && (__GNUC__ > 2) && \
+ (defined(__FreeBSD__) || defined(PYOS_OS2))
+/* gcc 3.x, on FreeBSD and OS/2+EMX and at optimisation levels of
+ * -O3 (autoconf default) and -O2 (EMX port default), generates code
+ * for _sre that fails for the default recursion limit.
+ */
+#define USE_RECURSION_LIMIT 7500
+#else
#define USE_RECURSION_LIMIT 10000
#endif
#endif
+#endif
/* enables fast searching */
#define USE_FAST_SEARCH