/[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 341 by ph10, Sat Apr 19 16:41:04 2008 UTC revision 342 by ph10, Sun Apr 20 17:10:13 2008 UTC
# Line 1429  for (;;) Line 1429  for (;;)
1429      /* Match a single character type; inline for speed */      /* Match a single character type; inline for speed */
1430    
1431      case OP_ANY:      case OP_ANY:
1432      if ((ims & PCRE_DOTALL) == 0)      if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH);
       {  
       if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH);  
       }  
1433      /* Fall through */      /* Fall through */
1434    
1435      case OP_ALLANY:      case OP_ALLANY:
1436      if (eptr++ >= md->end_subject) RRETURN(MATCH_NOMATCH);      if (eptr++ >= md->end_subject) RRETURN(MATCH_NOMATCH);
1437      if (utf8)      if (utf8) while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;
       while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;  
1438      ecode++;      ecode++;
1439      break;      break;
1440    
# Line 2955  for (;;) Line 2951  for (;;)
2951          case OP_ANY:          case OP_ANY:
2952          for (i = 1; i <= min; i++)          for (i = 1; i <= min; i++)
2953            {            {
2954            if (eptr >= md->end_subject ||            if (eptr >= md->end_subject || IS_NEWLINE(eptr))
                ((ims & PCRE_DOTALL) == 0 && IS_NEWLINE(eptr)))  
2955              RRETURN(MATCH_NOMATCH);              RRETURN(MATCH_NOMATCH);
2956            eptr++;            eptr++;
2957            while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;            while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;
# Line 3180  for (;;) Line 3175  for (;;)
3175        switch(ctype)        switch(ctype)
3176          {          {
3177          case OP_ANY:          case OP_ANY:
3178          if ((ims & PCRE_DOTALL) == 0)          for (i = 1; i <= min; i++)
3179            {            {
3180            for (i = 1; i <= min; i++)            if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH);
3181              {            eptr++;
             if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH);  
             eptr++;  
             }  
3182            }            }
         else eptr += min;  
3183          break;          break;
3184    
3185          case OP_ALLANY:          case OP_ALLANY:
# Line 3449  for (;;) Line 3440  for (;;)
3440            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM42);            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM42);
3441            if (rrc != MATCH_NOMATCH) RRETURN(rrc);            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
3442            if (fi >= max || eptr >= md->end_subject ||            if (fi >= max || eptr >= md->end_subject ||
3443                 (ctype == OP_ANY && (ims & PCRE_DOTALL) == 0 &&                 (ctype == OP_ANY && IS_NEWLINE(eptr)))
                 IS_NEWLINE(eptr)))  
3444              RRETURN(MATCH_NOMATCH);              RRETURN(MATCH_NOMATCH);
3445    
3446            GETCHARINC(c, eptr);            GETCHARINC(c, eptr);
3447            switch(ctype)            switch(ctype)
3448              {              {
3449              case OP_ANY:        /* This is the DOTALL case */              case OP_ANY:        /* This is the non-NL case */
3450              case OP_ALLANY:              case OP_ALLANY:
3451              case OP_ANYBYTE:              case OP_ANYBYTE:
3452              break;              break;
# Line 3609  for (;;) Line 3599  for (;;)
3599            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM43);            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM43);
3600            if (rrc != MATCH_NOMATCH) RRETURN(rrc);            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
3601            if (fi >= max || eptr >= md->end_subject ||            if (fi >= max || eptr >= md->end_subject ||
3602                 ((ims & PCRE_DOTALL) == 0 && IS_NEWLINE(eptr)))                 (ctype == OP_ANY && IS_NEWLINE(eptr)))
3603              RRETURN(MATCH_NOMATCH);              RRETURN(MATCH_NOMATCH);
3604    
3605            c = *eptr++;            c = *eptr++;
3606            switch(ctype)            switch(ctype)
3607              {              {
3608              case OP_ANY:     /* This is the DOTALL case */              case OP_ANY:     /* This is the non-NL case */
3609              case OP_ALLANY:              case OP_ALLANY:
3610              case OP_ANYBYTE:              case OP_ANYBYTE:
3611              break;              break;
# Line 3870  for (;;) Line 3860  for (;;)
3860            case OP_ANY:            case OP_ANY:
3861            if (max < INT_MAX)            if (max < INT_MAX)
3862              {              {
3863              if ((ims & PCRE_DOTALL) == 0)              for (i = min; i < max; i++)
               {  
               for (i = min; i < max; i++)  
                 {  
                 if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break;  
                 eptr++;  
                 while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;  
                 }  
               }  
             else  
3864                {                {
3865                for (i = min; i < max; i++)                if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break;
3866                  {                eptr++;
3867                  if (eptr >= md->end_subject) break;                while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;
                 eptr++;  
                 while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;  
                 }  
3868                }                }
3869              }              }
3870    
# Line 3894  for (;;) Line 3872  for (;;)
3872    
3873            else            else
3874              {              {
3875              if ((ims & PCRE_DOTALL) == 0)              for (i = min; i < max; i++)
               {  
               for (i = min; i < max; i++)  
                 {  
                 if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break;  
                 eptr++;  
                 while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;  
                 }  
               }  
             else  
3876                {                {
3877                eptr = md->end_subject;                if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break;
3878                  eptr++;
3879                  while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;
3880                }                }
3881              }              }
3882            break;            break;
# Line 4108  for (;;) Line 4079  for (;;)
4079          switch(ctype)          switch(ctype)
4080            {            {
4081            case OP_ANY:            case OP_ANY:
4082            if ((ims & PCRE_DOTALL) == 0)            for (i = min; i < max; i++)
4083              {              {
4084              for (i = min; i < max; i++)              if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break;
4085                {              eptr++;
               if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break;  
               eptr++;  
               }  
             break;  
4086              }              }
4087            /* For DOTALL case, fall through */            break;
4088    
4089            case OP_ALLANY:            case OP_ALLANY:
4090            case OP_ANYBYTE:            case OP_ANYBYTE:

Legend:
Removed from v.341  
changed lines
  Added in v.342

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12