changeset 11825:471eac3b0f38

(re_compile_fastmap): Don't free stack if it's empty. (re_match_failures): Reduce the larger value to 200000, and use whenever if MATCH_MAY_ALLOCATE. (MATCH_MAY_ALLOCATE): Don't consider REL_ALLOC when deciding whether to undef this.
author Richard M. Stallman <rms@gnu.org>
date Mon, 15 May 1995 23:30:28 +0000
parents 2866cf1e7c36
children 6197ce4cd509
files src/regex.c
diffstat 1 files changed, 9 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/regex.c	Mon May 15 23:27:00 1995 +0000
+++ b/src/regex.c	Mon May 15 23:30:28 1995 +0000
@@ -960,8 +960,11 @@
 #endif
 
 /* The match routines may not allocate if (1) they would do it with malloc
-   and (2) it's not safe for them to use malloc.  */
-#if (defined (C_ALLOCA) || defined (REGEX_MALLOC)) && (defined (emacs) || defined (REL_ALLOC))
+   and (2) it's not safe for them to use malloc.
+   Note that if REL_ALLOC is defined, matching would not use malloc for the
+   failure stack, but we would still use it for the register vectors;
+   so REL_ALLOC should not affect this.  */
+#if (defined (C_ALLOCA) || defined (REGEX_MALLOC)) && defined (emacs)
 #undef MATCH_MAY_ALLOCATE
 #endif
 
@@ -982,8 +985,8 @@
    exactly that if always used MAX_FAILURE_SPACE each time we failed.
    This is a variable only so users of regex can assign to it; we never
    change it ourselves.  */
-#ifdef REL_ALLOC
-int re_max_failures = 20000000;
+#if defined (MATCH_MAY_ALLOCATE)
+int re_max_failures = 200000;
 #else
 int re_max_failures = 2000;
 #endif
@@ -3138,7 +3141,8 @@
   bufp->can_be_null |= path_can_be_null;
 
  done:
-  REGEX_FREE_STACK (fail_stack.stack);
+  if (!FAIL_STACK_EMPTY ())
+     REGEX_FREE_STACK (fail_stack.stack);
   return 0;
 } /* re_compile_fastmap */