int has_range_table = CHARSET_RANGE_TABLE_EXISTS_P (p - 1);
fprintf (stderr, "/charset [%s",
- (re_opcode_t) *(p - 1) == charset_not ? "^" : "");
+ (re_opcode_t) *(p - 1) == charset_not ? "^" : "");
- assert (p + *p < pend);
+ if (p + *p >= pend)
+ fprintf (stderr, " !extends past end of pattern! ");
for (c = 0; c < 256; c++)
if (c / 8 < length
/* 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
#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
/* 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)
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);