summaryrefslogtreecommitdiff
path: root/posix/regex.c
diff options
context:
space:
mode:
authorGreg McGary <greg@mcgary.org>2000-08-04 20:07:17 +0000
committerGreg McGary <greg@mcgary.org>2000-08-04 20:07:17 +0000
commit13550428ee7b8261f2444bb59e029dd88ed7e334 (patch)
tree3143fff2c8801a5412d940af6aad76781813a3c9 /posix/regex.c
parentcd8b7ff9136eb26efc527df2df876c112d91df17 (diff)
* posix/regex.c (SET_HIGH_BOUND): New macro.
(MOVE_BUFFER_POINTER): Use it. (ELSE_EXTEND_BUFFER_HIGH_BOUND): New macro. (EXTEND_BUFFER): Use it. 2000-08-04 Greg McGary <greg@mcgary.org> * posix/regex.c (SET_HIGH_BOUND): New macro. (MOVE_BUFFER_POINTER): Use it. (ELSE_EXTEND_BUFFER_HIGH_BOUND): New macro. (EXTEND_BUFFER): Use it.
Diffstat (limited to 'posix/regex.c')
-rw-r--r--posix/regex.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/posix/regex.c b/posix/regex.c
index 8bd6ac7a2c..f1d066b844 100644
--- a/posix/regex.c
+++ b/posix/regex.c
@@ -1748,11 +1748,24 @@ static reg_errcode_t compile_range _RE_ARGS ((unsigned int range_start,
correct places in the new one. If extending the buffer results in it
being larger than MAX_BUF_SIZE, then flag memory exhausted. */
#if __BOUNDED_POINTERS__
+# define SET_HIGH_BOUND(P) (__ptrhigh (P) = __ptrlow (P) + bufp->allocated)
# define MOVE_BUFFER_POINTER(P) \
- (__ptrhigh (P) = (__ptrlow (P) += incr) + bufp->allocated, \
- __ptrvalue (P) += incr)
+ (__ptrlow (P) += incr, SET_HIGH_BOUND (P), __ptrvalue (P) += incr)
+# define ELSE_EXTEND_BUFFER_HIGH_BOUND \
+ else \
+ { \
+ SET_HIGH_BOUND (b); \
+ SET_HIGH_BOUND (begalt); \
+ if (fixup_alt_jump) \
+ SET_HIGH_BOUND (fixup_alt_jump); \
+ if (laststart) \
+ SET_HIGH_BOUND (laststart); \
+ if (pending_exact) \
+ SET_HIGH_BOUND (pending_exact); \
+ }
#else
# define MOVE_BUFFER_POINTER(P) (P) += incr
+# define ELSE_EXTEND_BUFFER_HIGH_BOUND
#endif
#define EXTEND_BUFFER() \
do { \
@@ -1778,6 +1791,7 @@ static reg_errcode_t compile_range _RE_ARGS ((unsigned int range_start,
if (pending_exact) \
MOVE_BUFFER_POINTER (pending_exact); \
} \
+ ELSE_EXTEND_BUFFER_HIGH_BOUND \
} while (0)