/[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 403 by ph10, Sat Mar 21 17:33:11 2009 UTC revision 409 by ph10, Sat Mar 28 17:10:56 2009 UTC
# Line 322  typedef struct heapframe { Line 322  typedef struct heapframe {
322    
323    /* Function arguments that may change */    /* Function arguments that may change */
324    
325    const uschar *Xeptr;    USPTR Xeptr;
326    const uschar *Xecode;    const uschar *Xecode;
327    const uschar *Xmstart;    USPTR Xmstart;
328    int Xoffset_top;    int Xoffset_top;
329    long int Xims;    long int Xims;
330    eptrblock *Xeptrb;    eptrblock *Xeptrb;
# Line 333  typedef struct heapframe { Line 333  typedef struct heapframe {
333    
334    /* Function local variables */    /* Function local variables */
335    
336    const uschar *Xcallpat;    USPTR Xcallpat;
337  #ifdef SUPPORT_UTF8  #ifdef SUPPORT_UTF8
338    const uschar *Xcharptr;    USPTR Xcharptr;
339  #endif  #endif
340    const uschar *Xdata;    USPTR Xdata;
341    const uschar *Xnext;    USPTR Xnext;
342    const uschar *Xpp;    USPTR Xpp;
343    const uschar *Xprev;    USPTR Xprev;
344    const uschar *Xsaved_eptr;    USPTR Xsaved_eptr;
345    
346    recursion_info Xnew_recursive;    recursion_info Xnew_recursive;
347    
# Line 428  Returns:       MATCH_MATCH if matched Line 428  Returns:       MATCH_MATCH if matched
428  */  */
429    
430  static int  static int
431  match(REGISTER USPTR eptr, REGISTER const uschar *ecode, const uschar *mstart,  match(REGISTER USPTR eptr, REGISTER const uschar *ecode, USPTR mstart,
432    int offset_top, match_data *md, unsigned long int ims, eptrblock *eptrb,    int offset_top, match_data *md, unsigned long int ims, eptrblock *eptrb,
433    int flags, unsigned int rdepth)    int flags, unsigned int rdepth)
434  {  {
# Line 641  for (;;) Line 641  for (;;)
641    {    {
642    minimize = possessive = FALSE;    minimize = possessive = FALSE;
643    op = *ecode;    op = *ecode;
644    
645    /* For partial matching, remember if we ever hit the end of the subject after    /* For partial matching, remember if we ever hit the end of the subject after
646    matching at least one subject character. */    matching at least one subject character. */
647    
# Line 794  for (;;) Line 794  for (;;)
794      case OP_COND:      case OP_COND:
795      case OP_SCOND:      case OP_SCOND:
796      codelink= GET(ecode, 1);      codelink= GET(ecode, 1);
797    
798      /* Because of the way auto-callout works during compile, a callout item is      /* Because of the way auto-callout works during compile, a callout item is
799      inserted between OP_COND and an assertion condition. */      inserted between OP_COND and an assertion condition. */
800    
# Line 822  for (;;) Line 822  for (;;)
822        }        }
823    
824      condcode = ecode[LINK_SIZE+1];      condcode = ecode[LINK_SIZE+1];
825    
826      /* Now see what the actual condition is */      /* Now see what the actual condition is */
827    
828      if (condcode == OP_RREF)         /* Recursion test */      if (condcode == OP_RREF)         /* Recursion test */
# Line 1461  for (;;) Line 1461  for (;;)
1461          {          {
1462          if (eptr == md->start_subject) prev_is_word = FALSE; else          if (eptr == md->start_subject) prev_is_word = FALSE; else
1463            {            {
1464            const uschar *lastptr = eptr - 1;            USPTR lastptr = eptr - 1;
1465            while((*lastptr & 0xc0) == 0x80) lastptr--;            while((*lastptr & 0xc0) == 0x80) lastptr--;
1466            GETCHAR(c, lastptr);            GETCHAR(c, lastptr);
1467            prev_is_word = c < 256 && (md->ctypes[c] & ctype_word) != 0;            prev_is_word = c < 256 && (md->ctypes[c] & ctype_word) != 0;
# Line 4619  back the character offset. */ Line 4619  back the character offset. */
4619  #ifdef SUPPORT_UTF8  #ifdef SUPPORT_UTF8
4620  if (utf8 && (options & PCRE_NO_UTF8_CHECK) == 0)  if (utf8 && (options & PCRE_NO_UTF8_CHECK) == 0)
4621    {    {
4622    if (_pcre_valid_utf8((uschar *)subject, length) >= 0)    if (_pcre_valid_utf8((USPTR)subject, length) >= 0)
4623      return PCRE_ERROR_BADUTF8;      return PCRE_ERROR_BADUTF8;
4624    if (start_offset > 0 && start_offset < length)    if (start_offset > 0 && start_offset < length)
4625      {      {
4626      int tb = ((uschar *)subject)[start_offset];      int tb = ((USPTR)subject)[start_offset];
4627      if (tb > 127)      if (tb > 127)
4628        {        {
4629        tb &= 0xc0;        tb &= 0xc0;

Legend:
Removed from v.403  
changed lines
  Added in v.409

  ViewVC Help
Powered by ViewVC 1.1.5