Mercurial > emacs
diff src/regex.c @ 52838:246c94760bee
(MAX_BUF_SIZE): Reduce to 2**15.
(print_partial_compiled_pattern): Replace assert with a printout.
(skip_noops, mutually_exclusive_p): Change args, values to re_char *.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 13 Oct 2003 18:48:14 +0000 |
parents | 3614833210ba |
children | ada02c2b390c |
line wrap: on
line diff
--- a/src/regex.c Mon Oct 13 18:45:03 2003 +0000 +++ b/src/regex.c Mon Oct 13 18:48:14 2003 +0000 @@ -975,9 +975,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 @@ -1736,8 +1737,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 @@ -1749,6 +1753,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 @@ -4456,9 +4461,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) @@ -4487,7 +4492,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);