/[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 461 by ph10, Mon Oct 5 10:59:35 2009 UTC revision 463 by ph10, Sun Oct 18 10:02:46 2009 UTC
# Line 415  the subject. */ Line 415  the subject. */
415      }      }
416    
417  #define SCHECK_PARTIAL()\  #define SCHECK_PARTIAL()\
418    if (md->partial && eptr > mstart)\    if (md->partial != 0 && eptr > mstart)\
419      {\      {\
420      md->hitend = TRUE;\      md->hitend = TRUE;\
421      if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL);\      if (md->partial > 1) RRETURN(PCRE_ERROR_PARTIAL);\
# Line 2146  for (;;) Line 2146  for (;;)
2146          pp = eptr;          pp = eptr;
2147          for (i = min; i < max; i++)          for (i = min; i < max; i++)
2148            {            {
2149            if (!match_ref(offset, eptr, length, md, ims)) break;            if (!match_ref(offset, eptr, length, md, ims))
2150                {
2151                CHECK_PARTIAL();
2152                break;
2153                }
2154            eptr += length;            eptr += length;
2155            }            }
2156          while (eptr >= pp)          while (eptr >= pp)
# Line 2315  for (;;) Line 2319  for (;;)
2319            for (i = min; i < max; i++)            for (i = min; i < max; i++)
2320              {              {
2321              int len = 1;              int len = 1;
2322              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
2323                  {
2324                  SCHECK_PARTIAL();
2325                  break;
2326                  }
2327              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
2328              if (c > 255)              if (c > 255)
2329                {                {
# Line 2341  for (;;) Line 2349  for (;;)
2349            {            {
2350            for (i = min; i < max; i++)            for (i = min; i < max; i++)
2351              {              {
2352              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
2353                  {
2354                  SCHECK_PARTIAL();
2355                  break;
2356                  }
2357              c = *eptr;              c = *eptr;
2358              if ((data[c/8] & (1 << (c&7))) == 0) break;              if ((data[c/8] & (1 << (c&7))) == 0) break;
2359              eptr++;              eptr++;
# Line 2446  for (;;) Line 2458  for (;;)
2458          for (i = min; i < max; i++)          for (i = min; i < max; i++)
2459            {            {
2460            int len = 1;            int len = 1;
2461            if (eptr >= md->end_subject) break;            if (eptr >= md->end_subject)
2462                {
2463                SCHECK_PARTIAL();
2464                break;
2465                }
2466            GETCHARLENTEST(c, eptr, len);            GETCHARLENTEST(c, eptr, len);
2467            if (!_pcre_xclass(c, data)) break;            if (!_pcre_xclass(c, data)) break;
2468            eptr += len;            eptr += len;
# Line 2685  for (;;) Line 2701  for (;;)
2701                       eptr <= md->end_subject - oclength &&                       eptr <= md->end_subject - oclength &&
2702                       memcmp(eptr, occhars, oclength) == 0) eptr += oclength;                       memcmp(eptr, occhars, oclength) == 0) eptr += oclength;
2703  #endif  /* SUPPORT_UCP */  #endif  /* SUPPORT_UCP */
2704              else break;              else
2705                  {
2706                  CHECK_PARTIAL();
2707                  break;
2708                  }
2709              }              }
2710    
2711            if (possessive) continue;            if (possessive) continue;
# Line 2763  for (;;) Line 2783  for (;;)
2783          pp = eptr;          pp = eptr;
2784          for (i = min; i < max; i++)          for (i = min; i < max; i++)
2785            {            {
2786            if (eptr >= md->end_subject || fc != md->lcc[*eptr]) break;            if (eptr >= md->end_subject)
2787                {
2788                SCHECK_PARTIAL();
2789                break;
2790                }
2791              if (fc != md->lcc[*eptr]) break;
2792            eptr++;            eptr++;
2793            }            }
2794    
# Line 2817  for (;;) Line 2842  for (;;)
2842          pp = eptr;          pp = eptr;
2843          for (i = min; i < max; i++)          for (i = min; i < max; i++)
2844            {            {
2845            if (eptr >= md->end_subject || fc != *eptr) break;            if (eptr >= md->end_subject)
2846                {
2847                SCHECK_PARTIAL();
2848                break;
2849                }
2850              if (fc != *eptr) break;
2851            eptr++;            eptr++;
2852            }            }
2853          if (possessive) continue;          if (possessive) continue;
# Line 3029  for (;;) Line 3059  for (;;)
3059            for (i = min; i < max; i++)            for (i = min; i < max; i++)
3060              {              {
3061              int len = 1;              int len = 1;
3062              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
3063                  {
3064                  SCHECK_PARTIAL();
3065                  break;
3066                  }
3067              GETCHARLEN(d, eptr, len);              GETCHARLEN(d, eptr, len);
3068              if (d < 256) d = md->lcc[d];              if (d < 256) d = md->lcc[d];
3069              if (fc == d) break;              if (fc == d) break;
# Line 3050  for (;;) Line 3084  for (;;)
3084            {            {
3085            for (i = min; i < max; i++)            for (i = min; i < max; i++)
3086              {              {
3087              if (eptr >= md->end_subject || fc == md->lcc[*eptr]) break;              if (eptr >= md->end_subject)
3088                  {
3089                  SCHECK_PARTIAL();
3090                  break;
3091                  }
3092                if (fc == md->lcc[*eptr]) break;
3093              eptr++;              eptr++;
3094              }              }
3095            if (possessive) continue;            if (possessive) continue;
# Line 3159  for (;;) Line 3198  for (;;)
3198            for (i = min; i < max; i++)            for (i = min; i < max; i++)
3199              {              {
3200              int len = 1;              int len = 1;
3201              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
3202                  {
3203                  SCHECK_PARTIAL();
3204                  break;
3205                  }
3206              GETCHARLEN(d, eptr, len);              GETCHARLEN(d, eptr, len);
3207              if (fc == d) break;              if (fc == d) break;
3208              eptr += len;              eptr += len;
# Line 3179  for (;;) Line 3222  for (;;)
3222            {            {
3223            for (i = min; i < max; i++)            for (i = min; i < max; i++)
3224              {              {
3225              if (eptr >= md->end_subject || fc == *eptr) break;              if (eptr >= md->end_subject)
3226                  {
3227                  SCHECK_PARTIAL();
3228                  break;
3229                  }
3230                if (fc == *eptr) break;
3231              eptr++;              eptr++;
3232              }              }
3233            if (possessive) continue;            if (possessive) continue;
# Line 4335  for (;;) Line 4383  for (;;)
4383            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4384              {              {
4385              int len = 1;              int len = 1;
4386              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4387                  {
4388                  SCHECK_PARTIAL();
4389                  break;
4390                  }
4391              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
4392              if (prop_fail_result) break;              if (prop_fail_result) break;
4393              eptr+= len;              eptr+= len;
# Line 4346  for (;;) Line 4398  for (;;)
4398            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4399              {              {
4400              int len = 1;              int len = 1;
4401              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4402                  {
4403                  SCHECK_PARTIAL();
4404                  break;
4405                  }
4406              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
4407              prop_chartype = UCD_CHARTYPE(c);              prop_chartype = UCD_CHARTYPE(c);
4408              if ((prop_chartype == ucp_Lu ||              if ((prop_chartype == ucp_Lu ||
# Line 4361  for (;;) Line 4417  for (;;)
4417            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4418              {              {
4419              int len = 1;              int len = 1;
4420              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4421                  {
4422                  SCHECK_PARTIAL();
4423                  break;
4424                  }
4425              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
4426              prop_category = UCD_CATEGORY(c);              prop_category = UCD_CATEGORY(c);
4427              if ((prop_category == prop_value) == prop_fail_result)              if ((prop_category == prop_value) == prop_fail_result)
# Line 4374  for (;;) Line 4434  for (;;)
4434            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4435              {              {
4436              int len = 1;              int len = 1;
4437              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4438                  {
4439                  SCHECK_PARTIAL();
4440                  break;
4441                  }
4442              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
4443              prop_chartype = UCD_CHARTYPE(c);              prop_chartype = UCD_CHARTYPE(c);
4444              if ((prop_chartype == prop_value) == prop_fail_result)              if ((prop_chartype == prop_value) == prop_fail_result)
# Line 4387  for (;;) Line 4451  for (;;)
4451            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4452              {              {
4453              int len = 1;              int len = 1;
4454              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4455                  {
4456                  SCHECK_PARTIAL();
4457                  break;
4458                  }
4459              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
4460              prop_script = UCD_SCRIPT(c);              prop_script = UCD_SCRIPT(c);
4461              if ((prop_script == prop_value) == prop_fail_result)              if ((prop_script == prop_value) == prop_fail_result)
# Line 4416  for (;;) Line 4484  for (;;)
4484          {          {
4485          for (i = min; i < max; i++)          for (i = min; i < max; i++)
4486            {            {
4487            if (eptr >= md->end_subject) break;            if (eptr >= md->end_subject)
4488                {
4489                SCHECK_PARTIAL();
4490                break;
4491                }
4492            GETCHARINCTEST(c, eptr);            GETCHARINCTEST(c, eptr);
4493            prop_category = UCD_CATEGORY(c);            prop_category = UCD_CATEGORY(c);
4494            if (prop_category == ucp_M) break;            if (prop_category == ucp_M) break;
# Line 4436  for (;;) Line 4508  for (;;)
4508          /* eptr is now past the end of the maximum run */          /* eptr is now past the end of the maximum run */
4509    
4510          if (possessive) continue;          if (possessive) continue;
4511    
4512          for(;;)          for(;;)
4513            {            {
4514            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM45);            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM45);
# Line 4471  for (;;) Line 4544  for (;;)
4544              {              {
4545              for (i = min; i < max; i++)              for (i = min; i < max; i++)
4546                {                {
4547                if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break;                if (eptr >= md->end_subject)
4548                    {
4549                    SCHECK_PARTIAL();
4550                    break;
4551                    }
4552                  if (IS_NEWLINE(eptr)) break;
4553                eptr++;                eptr++;
4554                while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;                while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;
4555                }                }
# Line 4483  for (;;) Line 4561  for (;;)
4561              {              {
4562              for (i = min; i < max; i++)              for (i = min; i < max; i++)
4563                {                {
4564                if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break;                if (eptr >= md->end_subject)
4565                    {
4566                    SCHECK_PARTIAL();
4567                    break;
4568                    }
4569                  if (IS_NEWLINE(eptr)) break;
4570                eptr++;                eptr++;
4571                while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;                while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;
4572                }                }
# Line 4495  for (;;) Line 4578  for (;;)
4578              {              {
4579              for (i = min; i < max; i++)              for (i = min; i < max; i++)
4580                {                {
4581                if (eptr >= md->end_subject) break;                if (eptr >= md->end_subject)
4582                    {
4583                    SCHECK_PARTIAL();
4584                    break;
4585                    }
4586                eptr++;                eptr++;
4587                while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;                while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;
4588                }                }
# Line 4508  for (;;) Line 4595  for (;;)
4595            case OP_ANYBYTE:            case OP_ANYBYTE:
4596            c = max - min;            c = max - min;
4597            if (c > (unsigned int)(md->end_subject - eptr))            if (c > (unsigned int)(md->end_subject - eptr))
4598              c = md->end_subject - eptr;              {
4599            eptr += c;              eptr = md->end_subject;
4600                SCHECK_PARTIAL();
4601                }
4602              else eptr += c;
4603            break;            break;
4604    
4605            case OP_ANYNL:            case OP_ANYNL:
4606            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4607              {              {
4608              int len = 1;              int len = 1;
4609              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4610                  {
4611                  SCHECK_PARTIAL();
4612                  break;
4613                  }
4614              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
4615              if (c == 0x000d)              if (c == 0x000d)
4616                {                {
# Line 4541  for (;;) Line 4635  for (;;)
4635              {              {
4636              BOOL gotspace;              BOOL gotspace;
4637              int len = 1;              int len = 1;
4638              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4639                  {
4640                  SCHECK_PARTIAL();
4641                  break;
4642                  }
4643              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
4644              switch(c)              switch(c)
4645                {                {
# Line 4579  for (;;) Line 4677  for (;;)
4677              {              {
4678              BOOL gotspace;              BOOL gotspace;
4679              int len = 1;              int len = 1;
4680              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4681                  {
4682                  SCHECK_PARTIAL();
4683                  break;
4684                  }
4685              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
4686              switch(c)              switch(c)
4687                {                {
# Line 4603  for (;;) Line 4705  for (;;)
4705            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4706              {              {
4707              int len = 1;              int len = 1;
4708              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4709                  {
4710                  SCHECK_PARTIAL();
4711                  break;
4712                  }
4713              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
4714              if (c < 256 && (md->ctypes[c] & ctype_digit) != 0) break;              if (c < 256 && (md->ctypes[c] & ctype_digit) != 0) break;
4715              eptr+= len;              eptr+= len;
# Line 4614  for (;;) Line 4720  for (;;)
4720            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4721              {              {
4722              int len = 1;              int len = 1;
4723              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4724                  {
4725                  SCHECK_PARTIAL();
4726                  break;
4727                  }
4728              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
4729              if (c >= 256 ||(md->ctypes[c] & ctype_digit) == 0) break;              if (c >= 256 ||(md->ctypes[c] & ctype_digit) == 0) break;
4730              eptr+= len;              eptr+= len;
# Line 4625  for (;;) Line 4735  for (;;)
4735            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4736              {              {
4737              int len = 1;              int len = 1;
4738              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4739                  {
4740                  SCHECK_PARTIAL();
4741                  break;
4742                  }
4743              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
4744              if (c < 256 && (md->ctypes[c] & ctype_space) != 0) break;              if (c < 256 && (md->ctypes[c] & ctype_space) != 0) break;
4745              eptr+= len;              eptr+= len;
# Line 4636  for (;;) Line 4750  for (;;)
4750            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4751              {              {
4752              int len = 1;              int len = 1;
4753              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4754                  {
4755                  SCHECK_PARTIAL();
4756                  break;
4757                  }
4758              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
4759              if (c >= 256 ||(md->ctypes[c] & ctype_space) == 0) break;              if (c >= 256 ||(md->ctypes[c] & ctype_space) == 0) break;
4760              eptr+= len;              eptr+= len;
# Line 4647  for (;;) Line 4765  for (;;)
4765            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4766              {              {
4767              int len = 1;              int len = 1;
4768              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4769                  {
4770                  SCHECK_PARTIAL();
4771                  break;
4772                  }
4773              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
4774              if (c < 256 && (md->ctypes[c] & ctype_word) != 0) break;              if (c < 256 && (md->ctypes[c] & ctype_word) != 0) break;
4775              eptr+= len;              eptr+= len;
# Line 4658  for (;;) Line 4780  for (;;)
4780            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4781              {              {
4782              int len = 1;              int len = 1;
4783              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4784                  {
4785                  SCHECK_PARTIAL();
4786                  break;
4787                  }
4788              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
4789              if (c >= 256 || (md->ctypes[c] & ctype_word) == 0) break;              if (c >= 256 || (md->ctypes[c] & ctype_word) == 0) break;
4790              eptr+= len;              eptr+= len;
# Line 4690  for (;;) Line 4816  for (;;)
4816            case OP_ANY:            case OP_ANY:
4817            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4818              {              {
4819              if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break;              if (eptr >= md->end_subject)
4820                  {
4821                  SCHECK_PARTIAL();
4822                  break;
4823                  }
4824                if (IS_NEWLINE(eptr)) break;
4825              eptr++;              eptr++;
4826              }              }
4827            break;            break;
# Line 4699  for (;;) Line 4830  for (;;)
4830            case OP_ANYBYTE:            case OP_ANYBYTE:
4831            c = max - min;            c = max - min;
4832            if (c > (unsigned int)(md->end_subject - eptr))            if (c > (unsigned int)(md->end_subject - eptr))
4833              c = md->end_subject - eptr;              {
4834            eptr += c;              eptr = md->end_subject;
4835                SCHECK_PARTIAL();
4836                }
4837              else eptr += c;
4838            break;            break;
4839    
4840            case OP_ANYNL:            case OP_ANYNL:
4841            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4842              {              {
4843              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4844                  {
4845                  SCHECK_PARTIAL();
4846                  break;
4847                  }
4848              c = *eptr;              c = *eptr;
4849              if (c == 0x000d)              if (c == 0x000d)
4850                {                {
# Line 4727  for (;;) Line 4865  for (;;)
4865            case OP_NOT_HSPACE:            case OP_NOT_HSPACE:
4866            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4867              {              {
4868              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4869                  {
4870                  SCHECK_PARTIAL();
4871                  break;
4872                  }
4873              c = *eptr;              c = *eptr;
4874              if (c == 0x09 || c == 0x20 || c == 0xa0) break;              if (c == 0x09 || c == 0x20 || c == 0xa0) break;
4875              eptr++;              eptr++;
# Line 4737  for (;;) Line 4879  for (;;)
4879            case OP_HSPACE:            case OP_HSPACE:
4880            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4881              {              {
4882              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4883                  {
4884                  SCHECK_PARTIAL();
4885                  break;
4886                  }
4887              c = *eptr;              c = *eptr;
4888              if (c != 0x09 && c != 0x20 && c != 0xa0) break;              if (c != 0x09 && c != 0x20 && c != 0xa0) break;
4889              eptr++;              eptr++;
# Line 4747  for (;;) Line 4893  for (;;)
4893            case OP_NOT_VSPACE:            case OP_NOT_VSPACE:
4894            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4895              {              {
4896              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4897                  {
4898                  SCHECK_PARTIAL();
4899                  break;
4900                  }
4901              c = *eptr;              c = *eptr;
4902              if (c == 0x0a || c == 0x0b || c == 0x0c || c == 0x0d || c == 0x85)              if (c == 0x0a || c == 0x0b || c == 0x0c || c == 0x0d || c == 0x85)
4903                break;                break;
# Line 4758  for (;;) Line 4908  for (;;)
4908            case OP_VSPACE:            case OP_VSPACE:
4909            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4910              {              {
4911              if (eptr >= md->end_subject) break;              if (eptr >= md->end_subject)
4912                  {
4913                  SCHECK_PARTIAL();
4914                  break;
4915                  }
4916              c = *eptr;              c = *eptr;
4917              if (c != 0x0a && c != 0x0b && c != 0x0c && c != 0x0d && c != 0x85)              if (c != 0x0a && c != 0x0b && c != 0x0c && c != 0x0d && c != 0x85)
4918                break;                break;
# Line 4769  for (;;) Line 4923  for (;;)
4923            case OP_NOT_DIGIT:            case OP_NOT_DIGIT:
4924            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4925              {              {
4926              if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_digit) != 0)              if (eptr >= md->end_subject)
4927                  {
4928                  SCHECK_PARTIAL();
4929                break;                break;
4930                  }
4931                if ((md->ctypes[*eptr] & ctype_digit) != 0) break;
4932              eptr++;              eptr++;
4933              }              }
4934            break;            break;
# Line 4778  for (;;) Line 4936  for (;;)
4936            case OP_DIGIT:            case OP_DIGIT:
4937            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4938              {              {
4939              if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_digit) == 0)              if (eptr >= md->end_subject)
4940                  {
4941                  SCHECK_PARTIAL();
4942                break;                break;
4943                  }
4944                if ((md->ctypes[*eptr] & ctype_digit) == 0) break;
4945              eptr++;              eptr++;
4946              }              }
4947            break;            break;
# Line 4787  for (;;) Line 4949  for (;;)
4949            case OP_NOT_WHITESPACE:            case OP_NOT_WHITESPACE:
4950            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4951              {              {
4952              if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_space) != 0)              if (eptr >= md->end_subject)
4953                  {
4954                  SCHECK_PARTIAL();
4955                break;                break;
4956                  }
4957                if ((md->ctypes[*eptr] & ctype_space) != 0) break;
4958              eptr++;              eptr++;
4959              }              }
4960            break;            break;
# Line 4796  for (;;) Line 4962  for (;;)
4962            case OP_WHITESPACE:            case OP_WHITESPACE:
4963            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4964              {              {
4965              if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_space) == 0)              if (eptr >= md->end_subject)
4966                  {
4967                  SCHECK_PARTIAL();
4968                break;                break;
4969                  }
4970                if ((md->ctypes[*eptr] & ctype_space) == 0) break;
4971              eptr++;              eptr++;
4972              }              }
4973            break;            break;
# Line 4805  for (;;) Line 4975  for (;;)
4975            case OP_NOT_WORDCHAR:            case OP_NOT_WORDCHAR:
4976            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4977              {              {
4978              if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_word) != 0)              if (eptr >= md->end_subject)
4979                  {
4980                  SCHECK_PARTIAL();
4981                break;                break;
4982                  }
4983                if ((md->ctypes[*eptr] & ctype_word) != 0) break;
4984              eptr++;              eptr++;
4985              }              }
4986            break;            break;
# Line 4814  for (;;) Line 4988  for (;;)
4988            case OP_WORDCHAR:            case OP_WORDCHAR:
4989            for (i = min; i < max; i++)            for (i = min; i < max; i++)
4990              {              {
4991              if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_word) == 0)              if (eptr >= md->end_subject)
4992                  {
4993                  SCHECK_PARTIAL();
4994                break;                break;
4995                  }
4996                if ((md->ctypes[*eptr] & ctype_word) == 0) break;
4997              eptr++;              eptr++;
4998              }              }
4999            break;            break;

Legend:
Removed from v.461  
changed lines
  Added in v.463

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12