/[pcre]/code/trunk/pcre_study.c
ViewVC logotype

Diff of /code/trunk/pcre_study.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 603 by ph10, Fri May 27 10:14:09 2011 UTC revision 604 by ph10, Thu Jun 2 19:04:54 2011 UTC
# Line 85  BOOL had_recurse = FALSE; Line 85  BOOL had_recurse = FALSE;
85  register int branchlength = 0;  register int branchlength = 0;
86  register uschar *cc = (uschar *)code + 1 + LINK_SIZE;  register uschar *cc = (uschar *)code + 1 + LINK_SIZE;
87    
88  if (*code == OP_CBRA || *code == OP_SCBRA) cc += 2;  if (*code == OP_CBRA || *code == OP_SCBRA ||
89        *code == OP_CBRAPOS || *code == OP_SCBRAPOS) cc += 2;
90    
91  /* Scan along the opcodes for this branch. If we get to the end of the  /* Scan along the opcodes for this branch. If we get to the end of the
92  branch, check the length against that of the other branches. */  branch, check the length against that of the other branches. */
# Line 119  for (;;) Line 120  for (;;)
120      case OP_SCBRA:      case OP_SCBRA:
121      case OP_BRA:      case OP_BRA:
122      case OP_SBRA:      case OP_SBRA:
123        case OP_CBRAPOS:
124        case OP_SCBRAPOS:
125        case OP_BRAPOS:
126        case OP_SBRAPOS:
127      case OP_ONCE:      case OP_ONCE:
128      d = find_minlength(cc, startcode, options);      d = find_minlength(cc, startcode, options);
129      if (d < 0) return d;      if (d < 0) return d;
# Line 135  for (;;) Line 140  for (;;)
140      case OP_KET:      case OP_KET:
141      case OP_KETRMAX:      case OP_KETRMAX:
142      case OP_KETRMIN:      case OP_KETRMIN:
143        case OP_KETRPOS:
144      case OP_END:      case OP_END:
145      if (length < 0 || (!had_recurse && branchlength < length))      if (length < 0 || (!had_recurse && branchlength < length))
146        length = branchlength;        length = branchlength;
# Line 179  for (;;) Line 185  for (;;)
185    
186      case OP_BRAZERO:      case OP_BRAZERO:
187      case OP_BRAMINZERO:      case OP_BRAMINZERO:
188        case OP_BRAPOSZERO:
189      case OP_SKIPZERO:      case OP_SKIPZERO:
190      cc += _pcre_OP_lengths[*cc];      cc += _pcre_OP_lengths[*cc];
191      do cc += GET(cc, 1); while (*cc == OP_ALT);      do cc += GET(cc, 1); while (*cc == OP_ALT);
# Line 375  for (;;) Line 382  for (;;)
382        min = 0;        min = 0;
383        cc++;        cc++;
384        break;        break;
385    
386          case OP_CRPLUS:
387          case OP_CRMINPLUS:
388          min = 1;
389          cc++;
390          break;
391    
392        case OP_CRRANGE:        case OP_CRRANGE:
393        case OP_CRMINRANGE:        case OP_CRMINRANGE:
394        min = GET2(cc, 1);        min = GET2(cc, 1);
# Line 664  volatile int dummy; Line 677  volatile int dummy;
677    
678  do  do
679    {    {
   const uschar *tcode = code + (((int)*code == OP_CBRA)? 3:1) + LINK_SIZE;  
680    BOOL try_next = TRUE;    BOOL try_next = TRUE;
681      const uschar *tcode = code + 1 + LINK_SIZE;
682    
683      if (*code == OP_CBRA || *code == OP_SCBRA ||
684          *code == OP_CBRAPOS || *code == OP_SCBRAPOS) tcode += 2;
685    
686    while (try_next)    /* Loop for items in this branch */    while (try_next)    /* Loop for items in this branch */
687      {      {
# Line 686  do Line 702  do
702        case OP_SBRA:        case OP_SBRA:
703        case OP_CBRA:        case OP_CBRA:
704        case OP_SCBRA:        case OP_SCBRA:
705          case OP_BRAPOS:
706          case OP_SBRAPOS:
707          case OP_CBRAPOS:
708          case OP_SCBRAPOS:
709        case OP_ONCE:        case OP_ONCE:
710        case OP_ASSERT:        case OP_ASSERT:
711        rc = set_start_bits(tcode, start_bits, utf8, cd);        rc = set_start_bits(tcode, start_bits, utf8, cd);
# Line 712  do Line 732  do
732        case OP_KET:        case OP_KET:
733        case OP_KETRMAX:        case OP_KETRMAX:
734        case OP_KETRMIN:        case OP_KETRMIN:
735          case OP_KETRPOS:
736        return SSB_CONTINUE;        return SSB_CONTINUE;
737    
738        /* Skip over callout */        /* Skip over callout */
# Line 733  do Line 754  do
754    
755        case OP_BRAZERO:        case OP_BRAZERO:
756        case OP_BRAMINZERO:        case OP_BRAMINZERO:
757          case OP_BRAPOSZERO:
758        if (set_start_bits(++tcode, start_bits, utf8, cd) == SSB_FAIL)        if (set_start_bits(++tcode, start_bits, utf8, cd) == SSB_FAIL)
759          return SSB_FAIL;          return SSB_FAIL;
760  /* =========================================================================  /* =========================================================================

Legend:
Removed from v.603  
changed lines
  Added in v.604

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12