/[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 120 by ph10, Mon Mar 12 11:36:14 2007 UTC revision 137 by ph10, Thu Mar 29 13:56:00 2007 UTC
# Line 48  possible. There are also some static sup Line 48  possible. There are also some static sup
48    
49  #include "pcre_internal.h"  #include "pcre_internal.h"
50    
51    /* Undefine some potentially clashing cpp symbols */
52    
53    #undef min
54    #undef max
55    
56  /* The chain of eptrblocks for tail recursions uses memory in stack workspace,  /* The chain of eptrblocks for tail recursions uses memory in stack workspace,
57  obtained at top level, the size of which is defined by EPTR_WORK_SIZE. */  obtained at top level, the size of which is defined by EPTR_WORK_SIZE. */
58    
# Line 299  typedef struct heapframe { Line 304  typedef struct heapframe {
304    int Xprop_category;    int Xprop_category;
305    int Xprop_chartype;    int Xprop_chartype;
306    int Xprop_script;    int Xprop_script;
307    int Xoclength;    int Xoclength;
308    uschar Xocchars[8];    uschar Xocchars[8];
309  #endif  #endif
310    
311    int Xctype;    int Xctype;
# Line 2062  for (;;) Line 2067  for (;;)
2067          for (i = 1; i <= min; i++)          for (i = 1; i <= min; i++)
2068            {            {
2069            if (memcmp(eptr, charptr, length) == 0) eptr += length;            if (memcmp(eptr, charptr, length) == 0) eptr += length;
2070  #ifdef SUPPORT_UCP  #ifdef SUPPORT_UCP
2071            /* Need braces because of following else */            /* Need braces because of following else */
2072            else if (oclength == 0) { RRETURN(MATCH_NOMATCH); }            else if (oclength == 0) { RRETURN(MATCH_NOMATCH); }
2073            else            else
# Line 2072  for (;;) Line 2077  for (;;)
2077              }              }
2078  #else   /* without SUPPORT_UCP */  #else   /* without SUPPORT_UCP */
2079            else { RRETURN(MATCH_NOMATCH); }            else { RRETURN(MATCH_NOMATCH); }
2080  #endif  /* SUPPORT_UCP */  #endif  /* SUPPORT_UCP */
2081            }            }
2082    
2083          if (min == max) continue;          if (min == max) continue;
# Line 2085  for (;;) Line 2090  for (;;)
2090              if (rrc != MATCH_NOMATCH) RRETURN(rrc);              if (rrc != MATCH_NOMATCH) RRETURN(rrc);
2091              if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);              if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
2092              if (memcmp(eptr, charptr, length) == 0) eptr += length;              if (memcmp(eptr, charptr, length) == 0) eptr += length;
2093  #ifdef SUPPORT_UCP  #ifdef SUPPORT_UCP
2094              /* Need braces because of following else */              /* Need braces because of following else */
2095              else if (oclength == 0) { RRETURN(MATCH_NOMATCH); }              else if (oclength == 0) { RRETURN(MATCH_NOMATCH); }
2096              else              else
# Line 2107  for (;;) Line 2112  for (;;)
2112              {              {
2113              if (eptr > md->end_subject - length) break;              if (eptr > md->end_subject - length) break;
2114              if (memcmp(eptr, charptr, length) == 0) eptr += length;              if (memcmp(eptr, charptr, length) == 0) eptr += length;
2115  #ifdef SUPPORT_UCP  #ifdef SUPPORT_UCP
2116              else if (oclength == 0) break;              else if (oclength == 0) break;
2117              else              else
2118                {                {
# Line 2116  for (;;) Line 2121  for (;;)
2121                }                }
2122  #else   /* without SUPPORT_UCP */  #else   /* without SUPPORT_UCP */
2123              else break;              else break;
2124  #endif  /* SUPPORT_UCP */  #endif  /* SUPPORT_UCP */
2125              }              }
2126    
2127            if (possessive) continue;            if (possessive) continue;
# Line 2128  for (;;) Line 2133  for (;;)
2133  #ifdef SUPPORT_UCP  #ifdef SUPPORT_UCP
2134             eptr--;             eptr--;
2135             BACKCHAR(eptr);             BACKCHAR(eptr);
2136  #else   /* without SUPPORT_UCP */  #else   /* without SUPPORT_UCP */
2137             eptr -= length;             eptr -= length;
2138  #endif  /* SUPPORT_UCP */  #endif  /* SUPPORT_UCP */
2139             }             }
2140            }            }
2141          /* Control never gets here */          /* Control never gets here */
# Line 4013  for(;;) Line 4018  for(;;)
4018        {        {
4019        while (start_match <= end_subject && !WAS_NEWLINE(start_match))        while (start_match <= end_subject && !WAS_NEWLINE(start_match))
4020          start_match++;          start_match++;
4021    
4022          /* If we have just passed a CR and the newline option is ANY, and we are
4023          now at a LF, advance the match position by one more character. */
4024    
4025          if (start_match[-1] == '\r' &&
4026               md->nltype == NLTYPE_ANY &&
4027               start_match < end_subject &&
4028               *start_match == '\n')
4029            start_match++;
4030        }        }
4031      }      }
4032    

Legend:
Removed from v.120  
changed lines
  Added in v.137

  ViewVC Help
Powered by ViewVC 1.1.5