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

Diff of /code/trunk/pcre_compile.c

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

revision 276 by ph10, Wed Nov 21 15:39:20 2007 UTC revision 285 by ph10, Wed Dec 12 17:03:50 2007 UTC
# Line 1508  for (;;) Line 1508  for (;;)
1508  can match the empty string or not. It is called from could_be_empty()  can match the empty string or not. It is called from could_be_empty()
1509  below and from compile_branch() when checking for an unlimited repeat of a  below and from compile_branch() when checking for an unlimited repeat of a
1510  group that can match nothing. Note that first_significant_code() skips over  group that can match nothing. Note that first_significant_code() skips over
1511  assertions. If we hit an unclosed bracket, we return "empty" - this means we've  backward and negative forward assertions when its final argument is TRUE. If we
1512  struck an inner bracket whose current branch will already have been scanned.  hit an unclosed bracket, we return "empty" - this means we've struck an inner
1513    bracket whose current branch will already have been scanned.
1514    
1515  Arguments:  Arguments:
1516    code        points to start of search    code        points to start of search
# Line 1530  for (code = first_significant_code(code Line 1531  for (code = first_significant_code(code
1531    const uschar *ccode;    const uschar *ccode;
1532    
1533    c = *code;    c = *code;
1534    
1535      /* Skip over forward assertions; the other assertions are skipped by
1536      first_significant_code() with a TRUE final argument. */
1537    
1538      if (c == OP_ASSERT)
1539        {
1540        do code += GET(code, 1); while (*code == OP_ALT);
1541        c = *code;
1542        continue;
1543        }
1544    
1545    /* Groups with zero repeats can of course be empty; skip them. */    /* Groups with zero repeats can of course be empty; skip them. */
1546    
# Line 4018  we set the flag only if there is a liter Line 4029  we set the flag only if there is a liter
4029        int len;        int len;
4030        if (*tempcode == OP_EXACT || *tempcode == OP_TYPEEXACT ||        if (*tempcode == OP_EXACT || *tempcode == OP_TYPEEXACT ||
4031            *tempcode == OP_NOTEXACT)            *tempcode == OP_NOTEXACT)
4032          tempcode += _pcre_OP_lengths[*tempcode];          tempcode += _pcre_OP_lengths[*tempcode] +
4033              ((*tempcode == OP_TYPEEXACT &&
4034                 (tempcode[3] == OP_PROP || tempcode[3] == OP_NOTPROP))? 2:0);
4035        len = code - tempcode;        len = code - tempcode;
4036        if (len > 0) switch (*tempcode)        if (len > 0) switch (*tempcode)
4037          {          {

Legend:
Removed from v.276  
changed lines
  Added in v.285

  ViewVC Help
Powered by ViewVC 1.1.5