changeset 5842:e9cd26c4e4ff

*** empty log message ***
author Jim Meyering <jim@meyering.net>
date Tue, 08 Feb 1994 04:01:10 +0000
parents 2f86788715e5
children d01185037467
files src/regex.c
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/regex.c	Tue Feb 08 03:47:10 1994 +0000
+++ b/src/regex.c	Tue Feb 08 04:01:10 1994 +0000
@@ -3324,6 +3324,10 @@
   unsigned char *p = bufp->buffer;
   register unsigned char *pend = p + bufp->used;
 
+  /* Mark the opcode just after a start_memory, so we can test for an
+     empty subpattern when we get to the stop_memory.  */
+  unsigned char *just_past_start_mem = 0;
+
   /* We use this to map every character in the string.  */
   char *translate = bufp->translate;
 
@@ -3804,6 +3808,7 @@
 
           /* Move past the register number and inner group count.  */
           p += 2;
+	  just_past_start_mem = p;
           break;
 
 
@@ -3868,7 +3873,7 @@
              information for this group that we had before trying this
              last match.  */
           if ((!MATCHED_SOMETHING (reg_info[*p])
-               || (re_opcode_t) p[-3] == start_memory)
+               || just_past_start_mem == p - 1)
 	      && (p + 2) < pend)              
             {
               boolean is_a_jump_n = false;