diff src/regex.c @ 89880:51677cb10ced

Sync to HEAD.
author Kenichi Handa <handa@m17n.org>
date Thu, 08 Apr 2004 11:39:14 +0000
parents 2f877ed80fa6
children 4c90ffeb71c5
line wrap: on
line diff
--- a/src/regex.c	Wed Apr 07 07:24:06 2004 +0000
+++ b/src/regex.c	Thu Apr 08 11:39:14 2004 +0000
@@ -1000,9 +1000,10 @@
 	    int has_range_table = CHARSET_RANGE_TABLE_EXISTS_P (p - 1);
 
 	    fprintf (stderr, "/charset [%s",
-		    (re_opcode_t) *(p - 1) == charset_not ? "^" : "");
-
-	    assert (p + *p < pend);
+		     (re_opcode_t) *(p - 1) == charset_not ? "^" : "");
+
+	    if (p + *p >= pend)
+	      fprintf (stderr, " !extends past end of pattern! ");
 
 	    for (c = 0; c < 256; c++)
 	      if (c / 8 < length
@@ -1761,8 +1762,11 @@
 
 
 /* This is not an arbitrary limit: the arguments which represent offsets
-   into the pattern are two bytes long.  So if 2^16 bytes turns out to
+   into the pattern are two bytes long.  So if 2^15 bytes turns out to
    be too small, many things would have to change.  */
+# define MAX_BUF_SIZE (1L << 15)
+
+#if 0  /* This is when we thought it could be 2^16 bytes.  */
 /* Any other compiler which, like MSC, has allocation limit below 2^16
    bytes will have to use approach similar to what was done below for
    MSC and drop MAX_BUF_SIZE a bit.  Otherwise you may end up
@@ -1774,6 +1778,7 @@
 #else
 # define MAX_BUF_SIZE (1L << 16)
 #endif
+#endif /* 0 */
 
 /* Extend the buffer by twice its current size via realloc and
    reset the pointers that pointed into the old block to point to the
@@ -3588,8 +3593,6 @@
   if (syntax & RE_NO_POSIX_BACKTRACKING)
     BUF_PUSH (succeed);
 
-  free (compile_stack.stack);
-
   /* We have succeeded; set the length of the buffer.  */
   bufp->used = b - bufp->buffer;
 
@@ -3634,7 +3637,7 @@
   }
 #endif /* not MATCH_MAY_ALLOCATE */
 
-  return REG_NOERROR;
+  FREE_STACK_RETURN (REG_NOERROR);
 } /* regex_compile */
 
 /* Subroutines for `regex_compile'.  */
@@ -4571,9 +4574,9 @@
 
 
 /* Jump over non-matching operations.  */
-static unsigned char *
+static re_char *
 skip_noops (p, pend)
-     unsigned char *p, *pend;
+     re_char *p, *pend;
 {
   int mcnt;
   while (p < pend)
@@ -4602,7 +4605,7 @@
 static int
 mutually_exclusive_p (bufp, p1, p2)
      struct re_pattern_buffer *bufp;
-     unsigned char *p1, *p2;
+     re_char *p1, *p2;
 {
   re_opcode_t op2;
   const boolean multibyte = RE_MULTIBYTE_P (bufp);
@@ -6474,3 +6477,6 @@
 WEAK_ALIAS (__regfree, regfree)
 
 #endif /* not emacs  */
+
+/* arch-tag: 4ffd68ba-2a9e-435b-a21a-018990f9eeb2
+   (do not change this comment) */