/[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 1251 by ph10, Wed Feb 20 17:42:03 2013 UTC revision 1265 by ph10, Sun Mar 3 10:42:46 2013 UTC
# Line 233  if (caseless) Line 233  if (caseless)
233      {      {
234      while (length-- > 0)      while (length-- > 0)
235        {        {
236        pcre_uchar cc, cp;        pcre_uint32 cc, cp;
237        if (eptr >= md->end_subject) return -2;   /* Partial match */        if (eptr >= md->end_subject) return -2;   /* Partial match */
238        cc = RAWUCHARTEST(eptr);        cc = RAWUCHARTEST(eptr);
239        cp = RAWUCHARTEST(p);        cp = RAWUCHARTEST(p);
# Line 308  enum { RM1=1, RM2,  RM3,  RM4,  RM5,  RM Line 308  enum { RM1=1, RM2,  RM3,  RM4,  RM5,  RM
308         RM31,  RM32, RM33, RM34, RM35, RM36, RM37, RM38, RM39, RM40,         RM31,  RM32, RM33, RM34, RM35, RM36, RM37, RM38, RM39, RM40,
309         RM41,  RM42, RM43, RM44, RM45, RM46, RM47, RM48, RM49, RM50,         RM41,  RM42, RM43, RM44, RM45, RM46, RM47, RM48, RM49, RM50,
310         RM51,  RM52, RM53, RM54, RM55, RM56, RM57, RM58, RM59, RM60,         RM51,  RM52, RM53, RM54, RM55, RM56, RM57, RM58, RM59, RM60,
311         RM61,  RM62, RM63, RM64, RM65, RM66, RM67 };         RM61,  RM62, RM63, RM64, RM65, RM66, RM67, RM68 };
312    
313  /* These versions of the macros use the stack, as normal. There are debugging  /* These versions of the macros use the stack, as normal. There are debugging
314  versions and production versions. Note that the "rw" argument of RMATCH isn't  versions and production versions. Note that the "rw" argument of RMATCH isn't
# Line 1318  for (;;) Line 1318  for (;;)
1318          if (rrc < 0) RRETURN(rrc);          if (rrc < 0) RRETURN(rrc);
1319          }          }
1320        ecode += PRIV(OP_lengths)[OP_CALLOUT];        ecode += PRIV(OP_lengths)[OP_CALLOUT];
1321          codelink -= PRIV(OP_lengths)[OP_CALLOUT];
1322        }        }
1323    
1324      condcode = ecode[LINK_SIZE+1];      condcode = ecode[LINK_SIZE+1];
# Line 2628  for (;;) Line 2629  for (;;)
2629              { if (op == OP_PROP) break; else { RRETURN(MATCH_NOMATCH); } }              { if (op == OP_PROP) break; else { RRETURN(MATCH_NOMATCH); } }
2630            }            }
2631          break;          break;
2632    
2633            case PT_UCNC:
2634            if ((c == CHAR_DOLLAR_SIGN || c == CHAR_COMMERCIAL_AT ||
2635                 c == CHAR_GRAVE_ACCENT || (c >= 0xa0 && c <= 0xd7ff) ||
2636                 c >= 0xe000) == (op == OP_NOTPROP))
2637              RRETURN(MATCH_NOMATCH);
2638            break;
2639    
2640          /* This should never occur */          /* This should never occur */
2641    
# Line 3215  for (;;) Line 3223  for (;;)
3223    
3224        if (fc < 128)        if (fc < 128)
3225          {          {
3226          pcre_uchar cc = RAWUCHAR(eptr);          pcre_uint32 cc = RAWUCHAR(eptr);
3227          if (md->lcc[fc] != TABLE_GET(cc, md->lcc, cc)) RRETURN(MATCH_NOMATCH);          if (md->lcc[fc] != TABLE_GET(cc, md->lcc, cc)) RRETURN(MATCH_NOMATCH);
3228          ecode++;          ecode++;
3229          eptr++;          eptr++;
# Line 4246  for (;;) Line 4254  for (;;)
4254                }                }
4255              }              }
4256            break;            break;
4257    
4258              case PT_UCNC:
4259              for (i = 1; i <= min; i++)
4260                {
4261                if (eptr >= md->end_subject)
4262                  {
4263                  SCHECK_PARTIAL();
4264                  RRETURN(MATCH_NOMATCH);
4265                  }
4266                GETCHARINCTEST(c, eptr);
4267                if ((c == CHAR_DOLLAR_SIGN || c == CHAR_COMMERCIAL_AT ||
4268                     c == CHAR_GRAVE_ACCENT || (c >= 0xa0 && c <= 0xd7ff) ||
4269                     c >= 0xe000) == prop_fail_result)
4270                  RRETURN(MATCH_NOMATCH);
4271                }
4272              break;
4273    
4274            /* This should not occur */            /* This should not occur */
4275    
# Line 4452  for (;;) Line 4476  for (;;)
4476          case OP_DIGIT:          case OP_DIGIT:
4477          for (i = 1; i <= min; i++)          for (i = 1; i <= min; i++)
4478            {            {
4479            pcre_uchar cc;            pcre_uint32 cc;
   
4480            if (eptr >= md->end_subject)            if (eptr >= md->end_subject)
4481              {              {
4482              SCHECK_PARTIAL();              SCHECK_PARTIAL();
# Line 4470  for (;;) Line 4493  for (;;)
4493          case OP_NOT_WHITESPACE:          case OP_NOT_WHITESPACE:
4494          for (i = 1; i <= min; i++)          for (i = 1; i <= min; i++)
4495            {            {
4496            pcre_uchar cc;            pcre_uint32 cc;
   
4497            if (eptr >= md->end_subject)            if (eptr >= md->end_subject)
4498              {              {
4499              SCHECK_PARTIAL();              SCHECK_PARTIAL();
# Line 4488  for (;;) Line 4510  for (;;)
4510          case OP_WHITESPACE:          case OP_WHITESPACE:
4511          for (i = 1; i <= min; i++)          for (i = 1; i <= min; i++)
4512            {            {
4513            pcre_uchar cc;            pcre_uint32 cc;
   
4514            if (eptr >= md->end_subject)            if (eptr >= md->end_subject)
4515              {              {
4516              SCHECK_PARTIAL();              SCHECK_PARTIAL();
# Line 4506  for (;;) Line 4527  for (;;)
4527          case OP_NOT_WORDCHAR:          case OP_NOT_WORDCHAR:
4528          for (i = 1; i <= min; i++)          for (i = 1; i <= min; i++)
4529            {            {
4530            pcre_uchar cc;            pcre_uint32 cc;
   
4531            if (eptr >= md->end_subject)            if (eptr >= md->end_subject)
4532              {              {
4533              SCHECK_PARTIAL();              SCHECK_PARTIAL();
# Line 4524  for (;;) Line 4544  for (;;)
4544          case OP_WORDCHAR:          case OP_WORDCHAR:
4545          for (i = 1; i <= min; i++)          for (i = 1; i <= min; i++)
4546            {            {
4547            pcre_uchar cc;            pcre_uint32 cc;
   
4548            if (eptr >= md->end_subject)            if (eptr >= md->end_subject)
4549              {              {
4550              SCHECK_PARTIAL();              SCHECK_PARTIAL();
# Line 4997  for (;;) Line 5016  for (;;)
5016                }                }
5017              }              }
5018            /* Control never gets here */            /* Control never gets here */
5019    
5020              case PT_UCNC:
5021              for (fi = min;; fi++)
5022                {
5023                RMATCH(eptr, ecode, offset_top, md, eptrb, RM68);
5024                if (rrc != MATCH_NOMATCH) RRETURN(rrc);
5025                if (fi >= max) RRETURN(MATCH_NOMATCH);
5026                if (eptr >= md->end_subject)
5027                  {
5028                  SCHECK_PARTIAL();
5029                  RRETURN(MATCH_NOMATCH);
5030                  }
5031                GETCHARINCTEST(c, eptr);
5032                if ((c == CHAR_DOLLAR_SIGN || c == CHAR_COMMERCIAL_AT ||
5033                     c == CHAR_GRAVE_ACCENT || (c >= 0xa0 && c <= 0xd7ff) ||
5034                     c >= 0xe000) == prop_fail_result)
5035                  RRETURN(MATCH_NOMATCH);
5036                }
5037              /* Control never gets here */
5038    
5039            /* This should never occur */            /* This should never occur */
5040            default:            default:
# Line 5492  for (;;) Line 5530  for (;;)
5530            GOT_MAX:            GOT_MAX:
5531            break;            break;
5532    
5533              case PT_UCNC:
5534              for (i = min; i < max; i++)
5535                {
5536                int len = 1;
5537                if (eptr >= md->end_subject)
5538                  {
5539                  SCHECK_PARTIAL();
5540                  break;
5541                  }
5542                GETCHARLENTEST(c, eptr, len);
5543                if ((c == CHAR_DOLLAR_SIGN || c == CHAR_COMMERCIAL_AT ||
5544                     c == CHAR_GRAVE_ACCENT || (c >= 0xa0 && c <= 0xd7ff) ||
5545                     c >= 0xe000) == prop_fail_result)
5546                  break;
5547                eptr += len;
5548                }
5549              break;
5550    
5551            default:            default:
5552            RRETURN(PCRE_ERROR_INTERNAL);            RRETURN(PCRE_ERROR_INTERNAL);
5553            }            }
# Line 6133  switch (frame->Xwhere) Line 6189  switch (frame->Xwhere)
6189    LBL(32) LBL(34) LBL(42) LBL(46)    LBL(32) LBL(34) LBL(42) LBL(46)
6190  #ifdef SUPPORT_UCP  #ifdef SUPPORT_UCP
6191    LBL(36) LBL(37) LBL(38) LBL(39) LBL(40) LBL(41) LBL(44) LBL(45)    LBL(36) LBL(37) LBL(38) LBL(39) LBL(40) LBL(41) LBL(44) LBL(45)
6192    LBL(59) LBL(60) LBL(61) LBL(62) LBL(67)    LBL(59) LBL(60) LBL(61) LBL(62) LBL(67) LBL(68)
6193  #endif  /* SUPPORT_UCP */  #endif  /* SUPPORT_UCP */
6194  #endif  /* SUPPORT_UTF */  #endif  /* SUPPORT_UTF */
6195    default:    default:

Legend:
Removed from v.1251  
changed lines
  Added in v.1265

  ViewVC Help
Powered by ViewVC 1.1.5