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

Diff of /code/trunk/pcre_dfa_exec.c

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

revision 200 by ph10, Wed Aug 1 09:10:40 2007 UTC revision 230 by ph10, Mon Sep 10 13:23:56 2007 UTC
# Line 130  static uschar coptable[] = { Line 130  static uschar coptable[] = {
130    0,                             /* CREF                                   */    0,                             /* CREF                                   */
131    0,                             /* RREF                                   */    0,                             /* RREF                                   */
132    0,                             /* DEF                                    */    0,                             /* DEF                                    */
133    0, 0                           /* BRAZERO, BRAMINZERO                    */    0, 0,                          /* BRAZERO, BRAMINZERO                    */
134      0, 0, 0, 0,                    /* PRUNE, SKIP, THEN, COMMIT              */
135      0, 0                           /* FAIL, ACCEPT                           */
136  };  };
137    
138  /* These 2 tables allow for compact code for testing for \D, \d, \S, \s, \W,  /* These 2 tables allow for compact code for testing for \D, \d, \S, \s, \W,
# Line 2642  if (md->tables == NULL) md->tables = _pc Line 2644  if (md->tables == NULL) md->tables = _pc
2644  used in a loop when finding where to start. */  used in a loop when finding where to start. */
2645    
2646  lcc = md->tables + lcc_offset;  lcc = md->tables + lcc_offset;
2647  startline = (re->options & PCRE_STARTLINE) != 0;  startline = (re->flags & PCRE_STARTLINE) != 0;
2648  firstline = (re->options & PCRE_FIRSTLINE) != 0;  firstline = (re->options & PCRE_FIRSTLINE) != 0;
2649    
2650  /* Set up the first character to match, if available. The first_byte value is  /* Set up the first character to match, if available. The first_byte value is
# Line 2653  studied, there may be a bitmap of possib Line 2655  studied, there may be a bitmap of possib
2655    
2656  if (!anchored)  if (!anchored)
2657    {    {
2658    if ((re->options & PCRE_FIRSTSET) != 0)    if ((re->flags & PCRE_FIRSTSET) != 0)
2659      {      {
2660      first_byte = re->first_byte & 255;      first_byte = re->first_byte & 255;
2661      if ((first_byte_caseless = ((re->first_byte & REQ_CASELESS) != 0)) == TRUE)      if ((first_byte_caseless = ((re->first_byte & REQ_CASELESS) != 0)) == TRUE)
# Line 2670  if (!anchored) Line 2672  if (!anchored)
2672  /* For anchored or unanchored matches, there may be a "last known required  /* For anchored or unanchored matches, there may be a "last known required
2673  character" set. */  character" set. */
2674    
2675  if ((re->options & PCRE_REQCHSET) != 0)  if ((re->flags & PCRE_REQCHSET) != 0)
2676    {    {
2677    req_byte = re->req_byte & 255;    req_byte = re->req_byte & 255;
2678    req_byte_caseless = (re->req_byte & REQ_CASELESS) != 0;    req_byte_caseless = (re->req_byte & REQ_CASELESS) != 0;
# Line 2840  for (;;) Line 2842  for (;;)
2842      }      }
2843    if (current_subject > end_subject) break;    if (current_subject > end_subject) break;
2844    
2845    /* If we have just passed a CR and the newline option is CRLF or ANY or    /* If we have just passed a CR and we are now at a LF, and the pattern does
2846    ANYCRLF, and we are now at a LF, advance the match position by one more    not contain any explicit matches for \r or \n, and the newline option is CRLF
2847    character. */    or ANY or ANYCRLF, advance the match position by one more character. */
2848    
2849    if (current_subject[-1] == '\r' &&    if (current_subject[-1] == '\r' &&
2850         (md->nltype == NLTYPE_ANY ||        current_subject < end_subject &&
2851          md->nltype == NLTYPE_ANYCRLF ||        *current_subject == '\n' &&
2852          md->nllen == 2) &&        (re->flags & PCRE_HASCRORLF) == 0 &&
2853         current_subject < end_subject &&          (md->nltype == NLTYPE_ANY ||
2854         *current_subject == '\n')           md->nltype == NLTYPE_ANYCRLF ||
2855             md->nllen == 2))
2856      current_subject++;      current_subject++;
2857    
2858    }   /* "Bumpalong" loop */    }   /* "Bumpalong" loop */

Legend:
Removed from v.200  
changed lines
  Added in v.230

  ViewVC Help
Powered by ViewVC 1.1.5