/[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 903 by ph10, Sat Jan 21 16:37:17 2012 UTC revision 914 by zherczeg, Mon Feb 13 06:04:50 2012 UTC
# Line 3508  for (;;) Line 3508  for (;;)
3508      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
3509      if (op == OP_NOTI)         /* The caseless case */      if (op == OP_NOTI)         /* The caseless case */
3510        {        {
3511        register int ch, och;        register unsigned int ch, och;
3512        ch = *ecode++;        ch = *ecode++;
3513  #ifdef COMPILE_PCRE8  #ifdef COMPILE_PCRE8
3514        /* ch must be < 128 if UTF is enabled. */        /* ch must be < 128 if UTF is enabled. */
# Line 3654  for (;;) Line 3654  for (;;)
3654              RRETURN(MATCH_NOMATCH);              RRETURN(MATCH_NOMATCH);
3655              }              }
3656            GETCHARINC(d, eptr);            GETCHARINC(d, eptr);
3657            if (fc == d || foc == d) RRETURN(MATCH_NOMATCH);            if (fc == d || (unsigned int) foc == d) RRETURN(MATCH_NOMATCH);
3658            }            }
3659          }          }
3660        else        else
# Line 3692  for (;;) Line 3692  for (;;)
3692                RRETURN(MATCH_NOMATCH);                RRETURN(MATCH_NOMATCH);
3693                }                }
3694              GETCHARINC(d, eptr);              GETCHARINC(d, eptr);
3695              if (fc == d || foc == d) RRETURN(MATCH_NOMATCH);              if (fc == d || (unsigned int)foc == d) RRETURN(MATCH_NOMATCH);
3696              }              }
3697            }            }
3698          else          else
# Line 3735  for (;;) Line 3735  for (;;)
3735                break;                break;
3736                }                }
3737              GETCHARLEN(d, eptr, len);              GETCHARLEN(d, eptr, len);
3738              if (fc == d || foc == d) break;              if (fc == d || (unsigned int)foc == d) break;
3739              eptr += len;              eptr += len;
3740              }              }
3741            if (possessive) continue;            if (possessive) continue;
# Line 6208  const pcre_study_data *study; Line 6208  const pcre_study_data *study;
6208  const REAL_PCRE *re = (const REAL_PCRE *)argument_re;  const REAL_PCRE *re = (const REAL_PCRE *)argument_re;
6209    
6210  /* Check for the special magic call that measures the size of the stack used  /* Check for the special magic call that measures the size of the stack used
6211  per recursive call of match(). */  per recursive call of match(). Without the funny casting for sizeof, a Windows
6212    compiler gave this error: "unary minus operator applied to unsigned type,
6213    result still unsigned". Hopefully the cast fixes that. */
6214    
6215  if (re == NULL && extra_data == NULL && subject == NULL && length == -999 &&  if (re == NULL && extra_data == NULL && subject == NULL && length == -999 &&
6216      start_offset == -999)      start_offset == -999)
6217  #ifdef NO_RECURSE  #ifdef NO_RECURSE
6218    return -sizeof(heapframe);    return -((int)sizeof(heapframe));
6219  #else  #else
6220    return match(NULL, NULL, NULL, 0, NULL, NULL, 0);    return match(NULL, NULL, NULL, 0, NULL, NULL, 0);
6221  #endif  #endif
# Line 6285  matching. */ Line 6287  matching. */
6287    
6288  #ifdef SUPPORT_JIT  #ifdef SUPPORT_JIT
6289  if (extra_data != NULL  if (extra_data != NULL
6290      && (extra_data->flags & PCRE_EXTRA_EXECUTABLE_JIT) != 0      && (extra_data->flags & (PCRE_EXTRA_EXECUTABLE_JIT |
6291                                 PCRE_EXTRA_TABLES)) == PCRE_EXTRA_EXECUTABLE_JIT
6292      && extra_data->executable_jit != NULL      && extra_data->executable_jit != NULL
     && (extra_data->flags & PCRE_EXTRA_TABLES) == 0  
6293      && (options & ~(PCRE_NO_UTF8_CHECK | PCRE_NOTBOL | PCRE_NOTEOL |      && (options & ~(PCRE_NO_UTF8_CHECK | PCRE_NOTBOL | PCRE_NOTEOL |
6294                      PCRE_NOTEMPTY | PCRE_NOTEMPTY_ATSTART)) == 0)                      PCRE_NOTEMPTY | PCRE_NOTEMPTY_ATSTART |
6295    return PRIV(jit_exec)(re, extra_data->executable_jit,                      PCRE_PARTIAL_SOFT | PCRE_PARTIAL_HARD)) == 0)
6296      {
6297      rc = PRIV(jit_exec)(re, extra_data->executable_jit,
6298      (const pcre_uchar *)subject, length, start_offset, options,      (const pcre_uchar *)subject, length, start_offset, options,
6299      ((extra_data->flags & PCRE_EXTRA_MATCH_LIMIT) == 0)      ((extra_data->flags & PCRE_EXTRA_MATCH_LIMIT) == 0)
6300      ? MATCH_LIMIT : extra_data->match_limit, offsets, offsetcount);      ? MATCH_LIMIT : extra_data->match_limit, offsets, offsetcount);
6301      /* PCRE_ERROR_NULL means that the selected normal or partial matching
6302      mode is not compiled. In this case we simply fallback to interpreter. */
6303      if (rc != PCRE_ERROR_NULL)
6304        return rc;
6305      }
6306  #endif  #endif
6307    
6308  /* Carry on with non-JIT matching. This information is for finding all the  /* Carry on with non-JIT matching. This information is for finding all the
# Line 6496  if (!anchored) Line 6505  if (!anchored)
6505    if ((re->flags & PCRE_FIRSTSET) != 0)    if ((re->flags & PCRE_FIRSTSET) != 0)
6506      {      {
6507      has_first_char = TRUE;      has_first_char = TRUE;
6508      first_char = first_char2 = re->first_char;      first_char = first_char2 = (pcre_uchar)(re->first_char);
6509      if ((re->flags & PCRE_FCH_CASELESS) != 0)      if ((re->flags & PCRE_FCH_CASELESS) != 0)
6510        {        {
6511        first_char2 = TABLE_GET(first_char, md->fcc, first_char);        first_char2 = TABLE_GET(first_char, md->fcc, first_char);
# Line 6518  character" set. */ Line 6527  character" set. */
6527  if ((re->flags & PCRE_REQCHSET) != 0)  if ((re->flags & PCRE_REQCHSET) != 0)
6528    {    {
6529    has_req_char = TRUE;    has_req_char = TRUE;
6530    req_char = req_char2 = re->req_char;    req_char = req_char2 = (pcre_uchar)(re->req_char);
6531    if ((re->flags & PCRE_RCH_CASELESS) != 0)    if ((re->flags & PCRE_RCH_CASELESS) != 0)
6532      {      {
6533      req_char2 = TABLE_GET(req_char, md->fcc, req_char);      req_char2 = TABLE_GET(req_char, md->fcc, req_char);

Legend:
Removed from v.903  
changed lines
  Added in v.914

  ViewVC Help
Powered by ViewVC 1.1.5