about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--posix/regex.c14
2 files changed, 19 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 4683bc220c..7b52ea136b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2000-07-18  Greg McGary  <greg@mcgary.org>
+
+	* posix/regex.c (EXTEND_BUFFER_HIGH_BOUND): New macro.
+	(EXTEND_BUFFER): Use it.
+
 2000-07-18  Ulrich Drepper  <drepper@redhat.com>
 
 	* include/libc-symbols.h: Define RETURN_ADDRESS macro.
diff --git a/posix/regex.c b/posix/regex.c
index c9476be532..2c967297a5 100644
--- a/posix/regex.c
+++ b/posix/regex.c
@@ -1750,8 +1750,21 @@ static reg_errcode_t compile_range _RE_ARGS ((unsigned int range_start,
 #if __BOUNDED_POINTERS__
 # define MOVE_BUFFER_POINTER(P) \
   (__ptrlow (P) += incr, __ptrhigh (P) += incr, __ptrvalue (P) += incr)
+# define EXTEND_BUFFER_HIGH_BOUND		\
+  do {						\
+    int incr = bufp->allocated >> 1;		\
+    __ptrhigh b += incr;			\
+    __ptrhigh begalt += incr;			\
+    if (fixup_alt_jump)				\
+      __ptrhigh fixup_alt_jump += incr;		\
+    if (laststart)				\
+      __ptrhigh laststart += incr;		\
+    if (pending_exact)				\
+      __ptrhigh pending_exact += incr;		\
+  } while (0)
 #else
 # define MOVE_BUFFER_POINTER(P) (P) += incr
+# define EXTEND_BUFFER_HIGH_BOUND
 #endif
 #define EXTEND_BUFFER()							\
   do {									\
@@ -1777,6 +1790,7 @@ static reg_errcode_t compile_range _RE_ARGS ((unsigned int range_start,
 	if (pending_exact)						\
 	  MOVE_BUFFER_POINTER (pending_exact);				\
       }									\
+    EXTEND_BUFFER_HIGH_BOUND;						\
   } while (0)