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

Diff of /code/trunk/pcre_exec.c

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

revision 933 by ph10, Sat Feb 25 12:18:23 2012 UTC revision 940 by ph10, Tue Feb 28 10:30:51 2012 UTC
# Line 1575  for (;;) Line 1575  for (;;)
1575          mstart = md->start_match_ptr;   /* In case \K reset it */          mstart = md->start_match_ptr;   /* In case \K reset it */
1576          break;          break;
1577          }          }
1578          md->mark = save_mark;
1579    
1580        /* PCRE does not allow THEN to escape beyond an assertion; it is treated        /* A COMMIT failure must fail the entire assertion, without trying any
1581        as NOMATCH. */        subsequent branches. */
1582    
1583          if (rrc == MATCH_COMMIT) RRETURN(MATCH_NOMATCH);
1584    
1585          /* PCRE does not allow THEN to escape beyond an assertion; it
1586          is treated as NOMATCH. */
1587    
1588        if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) RRETURN(rrc);        if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) RRETURN(rrc);
1589        ecode += GET(ecode, 1);        ecode += GET(ecode, 1);
       md->mark = save_mark;  
1590        }        }
1591      while (*ecode == OP_ALT);      while (*ecode == OP_ALT);
1592    
# Line 1789  for (;;) Line 1794  for (;;)
1794            goto RECURSION_MATCHED;        /* Exit loop; end processing */            goto RECURSION_MATCHED;        /* Exit loop; end processing */
1795            }            }
1796    
1797          /* PCRE does not allow THEN to escape beyond a recursion; it is treated          /* PCRE does not allow THEN or COMMIT to escape beyond a recursion; it
1798          as NOMATCH. */          is treated as NOMATCH. */
1799    
1800          else if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN)          else if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN &&
1801                     rrc != MATCH_COMMIT)
1802            {            {
1803            DPRINTF(("Recursion gave error %d\n", rrc));            DPRINTF(("Recursion gave error %d\n", rrc));
1804            if (new_recursive.offset_save != stacksave)            if (new_recursive.offset_save != stacksave)

Legend:
Removed from v.933  
changed lines
  Added in v.940

  ViewVC Help
Powered by ViewVC 1.1.5