/[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 178 by ph10, Wed Jun 13 08:44:34 2007 UTC revision 190 by ph10, Thu Jul 19 10:38:20 2007 UTC
# Line 2786  for (;;) Line 2786  for (;;)
2786            for (i = 1; i <= min; i++)            for (i = 1; i <= min; i++)
2787              {              {
2788              if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);              if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
2789              GETCHARINC(c, eptr);              GETCHARINCTEST(c, eptr);
2790              }              }
2791            break;            break;
2792    
# Line 2794  for (;;) Line 2794  for (;;)
2794            for (i = 1; i <= min; i++)            for (i = 1; i <= min; i++)
2795              {              {
2796              if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);              if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
2797              GETCHARINC(c, eptr);              GETCHARINCTEST(c, eptr);
2798              prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);              prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
2799              if ((prop_chartype == ucp_Lu ||              if ((prop_chartype == ucp_Lu ||
2800                   prop_chartype == ucp_Ll ||                   prop_chartype == ucp_Ll ||
# Line 2807  for (;;) Line 2807  for (;;)
2807            for (i = 1; i <= min; i++)            for (i = 1; i <= min; i++)
2808              {              {
2809              if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);              if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
2810              GETCHARINC(c, eptr);              GETCHARINCTEST(c, eptr);
2811              prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);              prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
2812              if ((prop_category == prop_value) == prop_fail_result)              if ((prop_category == prop_value) == prop_fail_result)
2813                RRETURN(MATCH_NOMATCH);                RRETURN(MATCH_NOMATCH);
# Line 2818  for (;;) Line 2818  for (;;)
2818            for (i = 1; i <= min; i++)            for (i = 1; i <= min; i++)
2819              {              {
2820              if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);              if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
2821              GETCHARINC(c, eptr);              GETCHARINCTEST(c, eptr);
2822              prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);              prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
2823              if ((prop_chartype == prop_value) == prop_fail_result)              if ((prop_chartype == prop_value) == prop_fail_result)
2824                RRETURN(MATCH_NOMATCH);                RRETURN(MATCH_NOMATCH);
# Line 2829  for (;;) Line 2829  for (;;)
2829            for (i = 1; i <= min; i++)            for (i = 1; i <= min; i++)
2830              {              {
2831              if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);              if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
2832              GETCHARINC(c, eptr);              GETCHARINCTEST(c, eptr);
2833              prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);              prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
2834              if ((prop_script == prop_value) == prop_fail_result)              if ((prop_script == prop_value) == prop_fail_result)
2835                RRETURN(MATCH_NOMATCH);                RRETURN(MATCH_NOMATCH);
# Line 2941  for (;;) Line 2941  for (;;)
2941              }              }
2942            }            }
2943          break;          break;
2944    
2945          case OP_HSPACE:          case OP_HSPACE:
2946          for (i = 1; i <= min; i++)          for (i = 1; i <= min; i++)
2947            {            {
# Line 2973  for (;;) Line 2973  for (;;)
2973              }              }
2974            }            }
2975          break;          break;
2976    
2977          case OP_NOT_VSPACE:          case OP_NOT_VSPACE:
2978          for (i = 1; i <= min; i++)          for (i = 1; i <= min; i++)
2979            {            {
# Line 2993  for (;;) Line 2993  for (;;)
2993              }              }
2994            }            }
2995          break;          break;
2996    
2997          case OP_VSPACE:          case OP_VSPACE:
2998          for (i = 1; i <= min; i++)          for (i = 1; i <= min; i++)
2999            {            {
# Line 3009  for (;;) Line 3009  for (;;)
3009              case 0x85:      /* NEL */              case 0x85:      /* NEL */
3010              case 0x2028:    /* LINE SEPARATOR */              case 0x2028:    /* LINE SEPARATOR */
3011              case 0x2029:    /* PARAGRAPH SEPARATOR */              case 0x2029:    /* PARAGRAPH SEPARATOR */
3012              break;              break;
3013              }              }
3014            }            }
3015          break;          break;
# Line 3150  for (;;) Line 3150  for (;;)
3150              case 0x09:      /* HT */              case 0x09:      /* HT */
3151              case 0x20:      /* SPACE */              case 0x20:      /* SPACE */
3152              case 0xa0:      /* NBSP */              case 0xa0:      /* NBSP */
3153              break;              break;
3154              }              }
3155            }            }
3156          break;          break;
# Line 3184  for (;;) Line 3184  for (;;)
3184              case 0x0c:      /* FF */              case 0x0c:      /* FF */
3185              case 0x0d:      /* CR */              case 0x0d:      /* CR */
3186              case 0x85:      /* NEL */              case 0x85:      /* NEL */
3187              break;              break;
3188              }              }
3189            }            }
3190          break;          break;
# Line 3764  for (;;) Line 3764  for (;;)
3764          switch(ctype)          switch(ctype)
3765            {            {
3766            case OP_ANY:            case OP_ANY:
   
           /* Special code is required for UTF8, but when the maximum is  
           unlimited we don't need it, so we repeat the non-UTF8 code. This is  
           probably worth it, because .* is quite a common idiom. */  
   
3767            if (max < INT_MAX)            if (max < INT_MAX)
3768              {              {
3769              if ((ims & PCRE_DOTALL) == 0)              if ((ims & PCRE_DOTALL) == 0)
# Line 3801  for (;;) Line 3796  for (;;)
3796                  {                  {
3797                  if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break;                  if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break;
3798                  eptr++;                  eptr++;
3799                    while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;
3800                  }                  }
               break;  
3801                }                }
3802              else              else
3803                {                {
3804                c = max - min;                eptr = md->end_subject;
               if (c > (unsigned int)(md->end_subject - eptr))  
                 c = md->end_subject - eptr;  
               eptr += c;  
3805                }                }
3806              }              }
3807            break;            break;
# Line 3845  for (;;) Line 3837  for (;;)
3837            break;            break;
3838    
3839            case OP_NOT_HSPACE:            case OP_NOT_HSPACE:
3840            case OP_HSPACE:            case OP_HSPACE:
3841            for (i = min; i < max; i++)            for (i = min; i < max; i++)
3842              {              {
3843              BOOL gotspace;              BOOL gotspace;
3844              int len = 1;              int len = 1;
3845              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject) break;
3846              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
3847              switch(c)              switch(c)
3848                {                {
3849                default: gotspace = FALSE; break;                default: gotspace = FALSE; break;
3850                case 0x09:      /* HT */                case 0x09:      /* HT */
3851                case 0x20:      /* SPACE */                case 0x20:      /* SPACE */
3852                case 0xa0:      /* NBSP */                case 0xa0:      /* NBSP */
# Line 3875  for (;;) Line 3867  for (;;)
3867                case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */                case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */
3868                case 0x3000:    /* IDEOGRAPHIC SPACE */                case 0x3000:    /* IDEOGRAPHIC SPACE */
3869                gotspace = TRUE;                gotspace = TRUE;
3870                break;                break;
3871                }                }
3872              if (gotspace == (ctype == OP_NOT_HSPACE)) break;              if (gotspace == (ctype == OP_NOT_HSPACE)) break;
3873              eptr += len;              eptr += len;
# Line 3883  for (;;) Line 3875  for (;;)
3875            break;            break;
3876    
3877            case OP_NOT_VSPACE:            case OP_NOT_VSPACE:
3878            case OP_VSPACE:            case OP_VSPACE:
3879            for (i = min; i < max; i++)            for (i = min; i < max; i++)
3880              {              {
3881              BOOL gotspace;              BOOL gotspace;
3882              int len = 1;              int len = 1;
3883              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject) break;
3884              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
3885              switch(c)              switch(c)
3886                {                {
3887                default: gotspace = FALSE; break;                default: gotspace = FALSE; break;
3888                case 0x0a:      /* LF */                case 0x0a:      /* LF */
3889                case 0x0b:      /* VT */                case 0x0b:      /* VT */
3890                case 0x0c:      /* FF */                case 0x0c:      /* FF */
# Line 3903  for (;;) Line 3895  for (;;)
3895                gotspace = TRUE;                gotspace = TRUE;
3896                break;                break;
3897                }                }
3898              if (gotspace == (ctype == OP_NOT_VSPACE)) break;              if (gotspace == (ctype == OP_NOT_VSPACE)) break;
3899              eptr += len;              eptr += len;
3900              }              }
3901            break;            break;
# Line 4040  for (;;) Line 4032  for (;;)
4032              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject) break;
4033              c = *eptr;              c = *eptr;
4034              if (c == 0x09 || c == 0x20 || c == 0xa0) break;              if (c == 0x09 || c == 0x20 || c == 0xa0) break;
4035              eptr++;              eptr++;
4036              }              }
4037            break;            break;
4038    
# Line 4050  for (;;) Line 4042  for (;;)
4042              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject) break;
4043              c = *eptr;              c = *eptr;
4044              if (c != 0x09 && c != 0x20 && c != 0xa0) break;              if (c != 0x09 && c != 0x20 && c != 0xa0) break;
4045              eptr++;              eptr++;
4046              }              }
4047            break;            break;
4048    
# Line 4061  for (;;) Line 4053  for (;;)
4053              c = *eptr;              c = *eptr;
4054              if (c == 0x0a || c == 0x0b || c == 0x0c || c == 0x0d || c == 0x85)              if (c == 0x0a || c == 0x0b || c == 0x0c || c == 0x0d || c == 0x85)
4055                break;                break;
4056              eptr++;              eptr++;
4057              }              }
4058            break;            break;
4059    

Legend:
Removed from v.178  
changed lines
  Added in v.190

  ViewVC Help
Powered by ViewVC 1.1.5