/[pcre]/code/branches/pcre16/pcre_exec.c
ViewVC logotype

Diff of /code/branches/pcre16/pcre_exec.c

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

revision 797 by zherczeg, Sat Dec 10 02:20:06 2011 UTC revision 798 by zherczeg, Sun Dec 11 18:07:25 2011 UTC
# Line 3085  for (;;) Line 3085  for (;;)
3085    
3086        if (fc < 128)        if (fc < 128)
3087          {          {
3088          if (md->lcc[*ecode++] != md->lcc[*eptr++]) MRRETURN(MATCH_NOMATCH);          if (md->lcc[fc]
3089                != TABLE_GET(*eptr, md->lcc, *eptr)) MRRETURN(MATCH_NOMATCH);
3090            ecode++;
3091            eptr++;
3092          }          }
3093    
3094        /* Otherwise we must pick up the subject character */        /* Otherwise we must pick up the subject character */
# Line 3316  for (;;) Line 3319  for (;;)
3319      if (op >= OP_STARI)  /* Caseless */      if (op >= OP_STARI)  /* Caseless */
3320        {        {
3321  #ifdef COMPILE_PCRE8  #ifdef COMPILE_PCRE8
3322        /* fc must be < 128 */        /* fc must be < 128 if UTF is enabled. */
3323        foc = md->fcc[fc];        foc = md->fcc[fc];
3324  #else  #else
3325  #ifdef SUPPORT_UTF  #ifdef SUPPORT_UTF
# Line 3459  for (;;) Line 3462  for (;;)
3462      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
3463      if (op == OP_NOTI)         /* The caseless case */      if (op == OP_NOTI)         /* The caseless case */
3464        {        {
3465  #if defined SUPPORT_UTF || !(defined COMPILE_PCRE8)        register int ch, och;
3466        if (c < 256)        ch = *ecode++;
3467  #endif  #ifdef COMPILE_PCRE8
3468          c = md->lcc[c];        /* ch must be < 128 if UTF is enabled. */
3469        if (md->lcc[*ecode++] == c) MRRETURN(MATCH_NOMATCH);        och = md->fcc[ch];
3470    #else
3471    #ifdef SUPPORT_UTF
3472    #ifdef SUPPORT_UCP
3473          if (utf && ch > 127)
3474            och = UCD_OTHERCASE(ch);
3475    #else
3476          if (utf && ch > 127)
3477            och = ch;
3478    #endif /* SUPPORT_UCP */
3479          else
3480    #endif /* SUPPORT_UTF */
3481            och = TABLE_GET(ch, md->fcc, ch);
3482    #endif /* COMPILE_PCRE8 */
3483          if (ch == c || och == c) MRRETURN(MATCH_NOMATCH);
3484        }        }
3485      else    /* Caseful */      else    /* Caseful */
3486        {        {
# Line 3562  for (;;) Line 3579  for (;;)
3579    
3580      if (op >= OP_NOTSTARI)     /* Caseless */      if (op >= OP_NOTSTARI)     /* Caseless */
3581        {        {
3582        fc = TABLE_GET(fc, md->lcc, fc);  #ifdef COMPILE_PCRE8
3583          /* fc must be < 128 if UTF is enabled. */
3584          foc = md->fcc[fc];
3585    #else
3586    #ifdef SUPPORT_UTF
3587    #ifdef SUPPORT_UCP
3588          if (utf && fc > 127)
3589            foc = UCD_OTHERCASE(fc);
3590    #else
3591          if (utf && fc > 127)
3592            foc = fc;
3593    #endif /* SUPPORT_UCP */
3594          else
3595    #endif /* SUPPORT_UTF */
3596            foc = TABLE_GET(fc, md->fcc, fc);
3597    #endif /* COMPILE_PCRE8 */
3598    
3599  #ifdef SUPPORT_UTF  #ifdef SUPPORT_UTF
3600        if (utf)        if (utf)
# Line 3576  for (;;) Line 3608  for (;;)
3608              MRRETURN(MATCH_NOMATCH);              MRRETURN(MATCH_NOMATCH);
3609              }              }
3610            GETCHARINC(d, eptr);            GETCHARINC(d, eptr);
3611            if (d < 256) d = md->lcc[d];            if (fc == d || foc == d) MRRETURN(MATCH_NOMATCH);
           if (fc == d) MRRETURN(MATCH_NOMATCH);  
3612            }            }
3613          }          }
3614        else        else
# Line 3591  for (;;) Line 3622  for (;;)
3622              SCHECK_PARTIAL();              SCHECK_PARTIAL();
3623              MRRETURN(MATCH_NOMATCH);              MRRETURN(MATCH_NOMATCH);
3624              }              }
3625            if (fc == md->lcc[*eptr++]) MRRETURN(MATCH_NOMATCH);            if (fc == *eptr || foc == *eptr) MRRETURN(MATCH_NOMATCH);
3626              eptr++;
3627            }            }
3628          }          }
3629    
# Line 3614  for (;;) Line 3646  for (;;)
3646                MRRETURN(MATCH_NOMATCH);                MRRETURN(MATCH_NOMATCH);
3647                }                }
3648              GETCHARINC(d, eptr);              GETCHARINC(d, eptr);
3649              if (d < 256) d = md->lcc[d];              if (fc == d || foc == d) MRRETURN(MATCH_NOMATCH);
             if (fc == d) MRRETURN(MATCH_NOMATCH);  
3650              }              }
3651            }            }
3652          else          else
# Line 3632  for (;;) Line 3663  for (;;)
3663                SCHECK_PARTIAL();                SCHECK_PARTIAL();
3664                MRRETURN(MATCH_NOMATCH);                MRRETURN(MATCH_NOMATCH);
3665                }                }
3666              if (fc == md->lcc[*eptr++]) MRRETURN(MATCH_NOMATCH);              if (fc == *eptr || foc == *eptr) MRRETURN(MATCH_NOMATCH);
3667                eptr++;
3668              }              }
3669            }            }
3670          /* Control never gets here */          /* Control never gets here */
# Line 3657  for (;;) Line 3689  for (;;)
3689                break;                break;
3690                }                }
3691              GETCHARLEN(d, eptr, len);              GETCHARLEN(d, eptr, len);
3692              if (d < 256) d = md->lcc[d];              if (fc == d || foc == d) break;
             if (fc == d) break;  
3693              eptr += len;              eptr += len;
3694              }              }
3695          if (possessive) continue;          if (possessive) continue;
# Line 3681  for (;;) Line 3712  for (;;)
3712                SCHECK_PARTIAL();                SCHECK_PARTIAL();
3713                break;                break;
3714                }                }
3715              if (fc == md->lcc[*eptr]) break;              if (fc == *eptr || foc == *eptr) break;
3716              eptr++;              eptr++;
3717              }              }
3718            if (possessive) continue;            if (possessive) continue;

Legend:
Removed from v.797  
changed lines
  Added in v.798

  ViewVC Help
Powered by ViewVC 1.1.5