This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

PATCH: more buffer-fiddling for regex.c


For i686: No build regressions.  No binary differences for non-BP.

OK?

2000-07-18  Greg McGary  <greg@mcgary.org>

	* posix/regex.c (EXTEND_BUFFER_HIGH_BOUND): New macro.
	(EXTEND_BUFFER): Use it.

Index: posix/regex.c
===================================================================
RCS file: /cvs/glibc/libc/posix/regex.c,v
retrieving revision 1.75
diff -u -p -r1.75 regex.c
--- regex.c	2000/07/07 07:53:40	1.75
+++ regex.c	2000/07/18 18:20:02
@@ -1750,8 +1750,21 @@ static reg_errcode_t compile_range _RE_A
 #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_A
 	if (pending_exact)						\
 	  MOVE_BUFFER_POINTER (pending_exact);				\
       }									\
+    EXTEND_BUFFER_HIGH_BOUND;						\
   } while (0)
 
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]