/[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 916 by ph10, Wed Feb 15 09:50:53 2012 UTC revision 919 by ph10, Fri Feb 17 11:48:02 2012 UTC
# Line 2068  for (;;) Line 2068  for (;;)
2068        {        {
2069        if (!IS_NEWLINE(eptr))        if (!IS_NEWLINE(eptr))
2070          {          {
2071          if (eptr + 1 >= md->end_subject &&          if (md->partial != 0 &&
2072              md->partial != 0 &&              eptr + 1 >= md->end_subject &&
2073              NLBLOCK->nltype == NLTYPE_FIXED &&              NLBLOCK->nltype == NLTYPE_FIXED &&
2074              NLBLOCK->nllen == 2 &&              NLBLOCK->nllen == 2 &&
2075              *eptr == NLBLOCK->nl[0])              *eptr == NLBLOCK->nl[0])
# Line 2112  for (;;) Line 2112  for (;;)
2112      if (eptr < md->end_subject &&      if (eptr < md->end_subject &&
2113          (!IS_NEWLINE(eptr) || eptr != md->end_subject - md->nllen))          (!IS_NEWLINE(eptr) || eptr != md->end_subject - md->nllen))
2114        {        {
2115        if (eptr + 1 >= md->end_subject &&        if (md->partial != 0 &&
2116            md->partial != 0 &&            eptr + 1 >= md->end_subject &&
2117            NLBLOCK->nltype == NLTYPE_FIXED &&            NLBLOCK->nltype == NLTYPE_FIXED &&
2118            NLBLOCK->nllen == 2 &&            NLBLOCK->nllen == 2 &&
2119            *eptr == NLBLOCK->nl[0])            *eptr == NLBLOCK->nl[0])
# Line 2250  for (;;) Line 2250  for (;;)
2250        }        }
2251      break;      break;
2252    
2253      /* Match a single character type; inline for speed */      /* Match any single character type except newline; have to take care with
2254        CRLF newlines and partial matching. */
2255    
2256      case OP_ANY:      case OP_ANY:
2257      if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH);      if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH);
2258        if (md->partial != 0 &&
2259            eptr + 1 >= md->end_subject &&
2260            NLBLOCK->nltype == NLTYPE_FIXED &&
2261            NLBLOCK->nllen == 2 &&
2262            *eptr == NLBLOCK->nl[0])
2263          {
2264          md->hitend = TRUE;
2265          if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL);
2266          }
2267    
2268      /* Fall through */      /* Fall through */
2269    
2270        /* Match any single character whatsoever. */
2271    
2272      case OP_ALLANY:      case OP_ALLANY:
2273      if (eptr >= md->end_subject)   /* DO NOT merge the eptr++ here; it must */      if (eptr >= md->end_subject)   /* DO NOT merge the eptr++ here; it must */
2274        {                            /* not be updated before SCHECK_PARTIAL. */        {                            /* not be updated before SCHECK_PARTIAL. */
# Line 4233  for (;;) Line 4246  for (;;)
4246              RRETURN(MATCH_NOMATCH);              RRETURN(MATCH_NOMATCH);
4247              }              }
4248            if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH);            if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH);
4249              if (md->partial != 0 &&
4250                  eptr + 1 >= md->end_subject &&
4251                  NLBLOCK->nltype == NLTYPE_FIXED &&
4252                  NLBLOCK->nllen == 2 &&
4253                  *eptr == NLBLOCK->nl[0])
4254                {
4255                md->hitend = TRUE;
4256                if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL);
4257                }
4258            eptr++;            eptr++;
4259            ACROSSCHAR(eptr < md->end_subject, *eptr, eptr++);            ACROSSCHAR(eptr < md->end_subject, *eptr, eptr++);
4260            }            }
# Line 4517  for (;;) Line 4539  for (;;)
4539              RRETURN(MATCH_NOMATCH);              RRETURN(MATCH_NOMATCH);
4540              }              }
4541            if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH);            if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH);
4542              if (md->partial != 0 &&
4543                  eptr + 1 >= md->end_subject &&
4544                  NLBLOCK->nltype == NLTYPE_FIXED &&
4545                  NLBLOCK->nllen == 2 &&
4546                  *eptr == NLBLOCK->nl[0])
4547                {
4548                md->hitend = TRUE;
4549                if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL);
4550                }
4551            eptr++;            eptr++;
4552            }            }
4553          break;          break;
# Line 5021  for (;;) Line 5052  for (;;)
5052            GETCHARINC(c, eptr);            GETCHARINC(c, eptr);
5053            switch(ctype)            switch(ctype)
5054              {              {
5055              case OP_ANY:        /* This is the non-NL case */              case OP_ANY:               /* This is the non-NL case */
5056                if (md->partial != 0 &&    /* Take care with CRLF partial */
5057                    eptr >= md->end_subject &&
5058                    NLBLOCK->nltype == NLTYPE_FIXED &&
5059                    NLBLOCK->nllen == 2 &&
5060                    c == NLBLOCK->nl[0])
5061                  {
5062                  md->hitend = TRUE;
5063                  if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL);
5064                  }
5065                break;
5066    
5067              case OP_ALLANY:              case OP_ALLANY:
5068              case OP_ANYBYTE:              case OP_ANYBYTE:
5069              break;              break;
# Line 5184  for (;;) Line 5226  for (;;)
5226            c = *eptr++;            c = *eptr++;
5227            switch(ctype)            switch(ctype)
5228              {              {
5229              case OP_ANY:     /* This is the non-NL case */              case OP_ANY:               /* This is the non-NL case */
5230                if (md->partial != 0 &&    /* Take care with CRLF partial */
5231                    eptr >= md->end_subject &&
5232                    NLBLOCK->nltype == NLTYPE_FIXED &&
5233                    NLBLOCK->nllen == 2 &&
5234                    c == NLBLOCK->nl[0])
5235                  {
5236                  md->hitend = TRUE;
5237                  if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL);
5238                  }
5239                break;
5240    
5241              case OP_ALLANY:              case OP_ALLANY:
5242              case OP_ANYBYTE:              case OP_ANYBYTE:
5243              break;              break;
# Line 5585  for (;;) Line 5638  for (;;)
5638                  break;                  break;
5639                  }                  }
5640                if (IS_NEWLINE(eptr)) break;                if (IS_NEWLINE(eptr)) break;
5641                  if (md->partial != 0 &&    /* Take care with CRLF partial */
5642                      eptr + 1 >= md->end_subject &&
5643                      NLBLOCK->nltype == NLTYPE_FIXED &&
5644                      NLBLOCK->nllen == 2 &&
5645                      *eptr == NLBLOCK->nl[0])
5646                    {
5647                    md->hitend = TRUE;
5648                    if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL);
5649                    }
5650                eptr++;                eptr++;
5651                ACROSSCHAR(eptr < md->end_subject, *eptr, eptr++);                ACROSSCHAR(eptr < md->end_subject, *eptr, eptr++);
5652                }                }
# Line 5602  for (;;) Line 5664  for (;;)
5664                  break;                  break;
5665                  }                  }
5666                if (IS_NEWLINE(eptr)) break;                if (IS_NEWLINE(eptr)) break;
5667                  if (md->partial != 0 &&    /* Take care with CRLF partial */
5668                      eptr + 1 >= md->end_subject &&
5669                      NLBLOCK->nltype == NLTYPE_FIXED &&
5670                      NLBLOCK->nllen == 2 &&
5671                      *eptr == NLBLOCK->nl[0])
5672                    {
5673                    md->hitend = TRUE;
5674                    if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL);
5675                    }
5676                eptr++;                eptr++;
5677                ACROSSCHAR(eptr < md->end_subject, *eptr, eptr++);                ACROSSCHAR(eptr < md->end_subject, *eptr, eptr++);
5678                }                }
# Line 5866  for (;;) Line 5937  for (;;)
5937                break;                break;
5938                }                }
5939              if (IS_NEWLINE(eptr)) break;              if (IS_NEWLINE(eptr)) break;
5940                if (md->partial != 0 &&    /* Take care with CRLF partial */
5941                    eptr + 1 >= md->end_subject &&
5942                    NLBLOCK->nltype == NLTYPE_FIXED &&
5943                    NLBLOCK->nllen == 2 &&
5944                    *eptr == NLBLOCK->nl[0])
5945                  {
5946                  md->hitend = TRUE;
5947                  if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL);
5948                  }
5949              eptr++;              eptr++;
5950              }              }
5951            break;            break;

Legend:
Removed from v.916  
changed lines
  Added in v.919

  ViewVC Help
Powered by ViewVC 1.1.5