/[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 442 by ph10, Fri Sep 11 10:21:02 2009 UTC revision 446 by ph10, Tue Sep 15 10:49:50 2009 UTC
# Line 663  for (;;) Line 663  for (;;)
663    {    {
664    minimize = possessive = FALSE;    minimize = possessive = FALSE;
665    op = *ecode;    op = *ecode;
666    
667    switch(op)    switch(op)
668      {      {
669      case OP_FAIL:      case OP_FAIL:
# Line 924  for (;;) Line 924  for (;;)
924        md->recursive = rec->prevrec;        md->recursive = rec->prevrec;
925        memmove(md->offset_vector, rec->offset_save,        memmove(md->offset_vector, rec->offset_save,
926          rec->saved_max * sizeof(int));          rec->saved_max * sizeof(int));
927          offset_top = rec->offset_top;
928        mstart = rec->save_start;        mstart = rec->save_start;
929        ims = original_ims;        ims = original_ims;
930        ecode = rec->after_call;        ecode = rec->after_call;
# Line 934  for (;;) Line 935  for (;;)
935      set, or if PCRE_NOTEMPTY_ATSTART is set and we have matched at the start of      set, or if PCRE_NOTEMPTY_ATSTART is set and we have matched at the start of
936      the subject. In both cases, backtracking will then try other alternatives,      the subject. In both cases, backtracking will then try other alternatives,
937      if any. */      if any. */
938    
939      if (eptr == mstart &&      if (eptr == mstart &&
940          (md->notempty ||          (md->notempty ||
941            (md->notempty_atstart &&            (md->notempty_atstart &&
942              mstart == md->start_subject + md->start_offset)))              mstart == md->start_subject + md->start_offset)))
943        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
944    
945      /* Otherwise, we have a match. */      /* Otherwise, we have a match. */
946    
947      md->end_match_ptr = eptr;           /* Record where we ended */      md->end_match_ptr = eptr;           /* Record where we ended */
# Line 1115  for (;;) Line 1116  for (;;)
1116        memcpy(new_recursive.offset_save, md->offset_vector,        memcpy(new_recursive.offset_save, md->offset_vector,
1117              new_recursive.saved_max * sizeof(int));              new_recursive.saved_max * sizeof(int));
1118        new_recursive.save_start = mstart;        new_recursive.save_start = mstart;
1119          new_recursive.offset_top = offset_top;
1120        mstart = eptr;        mstart = eptr;
1121    
1122        /* OK, now we can do the recursion. For each top-level alternative we        /* OK, now we can do the recursion. For each top-level alternative we
# Line 1313  for (;;) Line 1315  for (;;)
1315        {        {
1316        number = GET2(prev, 1+LINK_SIZE);        number = GET2(prev, 1+LINK_SIZE);
1317        offset = number << 1;        offset = number << 1;
1318    
1319  #ifdef DEBUG  #ifdef DEBUG
1320        printf("end bracket %d", number);        printf("end bracket %d", number);
1321        printf("\n");        printf("\n");
# Line 1339  for (;;) Line 1341  for (;;)
1341          mstart = rec->save_start;          mstart = rec->save_start;
1342          memcpy(md->offset_vector, rec->offset_save,          memcpy(md->offset_vector, rec->offset_save,
1343            rec->saved_max * sizeof(int));            rec->saved_max * sizeof(int));
1344            offset_top = rec->offset_top;
1345          ecode = rec->after_call;          ecode = rec->after_call;
1346          ims = original_ims;          ims = original_ims;
1347          break;          break;
# Line 1478  for (;;) Line 1481  for (;;)
1481    
1482        /* Find out if the previous and current characters are "word" characters.        /* Find out if the previous and current characters are "word" characters.
1483        It takes a bit more work in UTF-8 mode. Characters > 255 are assumed to        It takes a bit more work in UTF-8 mode. Characters > 255 are assumed to
1484        be "non-word" characters. Remember the earliest consulted character for        be "non-word" characters. Remember the earliest consulted character for
1485        partial matching. */        partial matching. */
1486    
1487  #ifdef SUPPORT_UTF8  #ifdef SUPPORT_UTF8
# Line 1488  for (;;) Line 1491  for (;;)
1491            {            {
1492            USPTR lastptr = eptr - 1;            USPTR lastptr = eptr - 1;
1493            while((*lastptr & 0xc0) == 0x80) lastptr--;            while((*lastptr & 0xc0) == 0x80) lastptr--;
1494            if (lastptr < md->start_used_ptr) md->start_used_ptr = lastptr;            if (lastptr < md->start_used_ptr) md->start_used_ptr = lastptr;
1495            GETCHAR(c, lastptr);            GETCHAR(c, lastptr);
1496            prev_is_word = c < 256 && (md->ctypes[c] & ctype_word) != 0;            prev_is_word = c < 256 && (md->ctypes[c] & ctype_word) != 0;
1497            }            }
1498          if (eptr >= md->end_subject)          if (eptr >= md->end_subject)
1499            {            {
1500            SCHECK_PARTIAL();            SCHECK_PARTIAL();
1501            cur_is_word = FALSE;            cur_is_word = FALSE;
1502            }            }
1503          else          else
1504            {            {
# Line 1511  for (;;) Line 1514  for (;;)
1514          {          {
1515          if (eptr == md->start_subject) prev_is_word = FALSE; else          if (eptr == md->start_subject) prev_is_word = FALSE; else
1516            {            {
1517            if (eptr <= md->start_used_ptr) md->start_used_ptr = eptr - 1;            if (eptr <= md->start_used_ptr) md->start_used_ptr = eptr - 1;
1518            prev_is_word = ((md->ctypes[eptr[-1]] & ctype_word) != 0);            prev_is_word = ((md->ctypes[eptr[-1]] & ctype_word) != 0);
1519            }            }
1520          if (eptr >= md->end_subject)          if (eptr >= md->end_subject)
1521            {            {
1522            SCHECK_PARTIAL();            SCHECK_PARTIAL();
1523            cur_is_word = FALSE;            cur_is_word = FALSE;
1524            }            }
1525          else cur_is_word = ((md->ctypes[*eptr] & ctype_word) != 0);          else cur_is_word = ((md->ctypes[*eptr] & ctype_word) != 0);
1526          }          }
# Line 1537  for (;;) Line 1540  for (;;)
1540      /* Fall through */      /* Fall through */
1541    
1542      case OP_ALLANY:      case OP_ALLANY:
1543      if (eptr++ >= md->end_subject)      if (eptr++ >= md->end_subject)
1544        {        {
1545        SCHECK_PARTIAL();        SCHECK_PARTIAL();
1546        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
1547        }        }
1548      if (utf8) while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;      if (utf8) while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;
1549      ecode++;      ecode++;
1550      break;      break;
# Line 1550  for (;;) Line 1553  for (;;)
1553      any byte, even newline, independent of the setting of PCRE_DOTALL. */      any byte, even newline, independent of the setting of PCRE_DOTALL. */
1554    
1555      case OP_ANYBYTE:      case OP_ANYBYTE:
1556      if (eptr++ >= md->end_subject)      if (eptr++ >= md->end_subject)
1557        {        {
1558        SCHECK_PARTIAL();        SCHECK_PARTIAL();
1559        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
1560        }        }
1561      ecode++;      ecode++;
1562      break;      break;
1563    
1564      case OP_NOT_DIGIT:      case OP_NOT_DIGIT:
1565      if (eptr >= md->end_subject)      if (eptr >= md->end_subject)
1566        {        {
1567        SCHECK_PARTIAL();        SCHECK_PARTIAL();
1568        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
1569        }        }
1570      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
1571      if (      if (
1572  #ifdef SUPPORT_UTF8  #ifdef SUPPORT_UTF8
# Line 1576  for (;;) Line 1579  for (;;)
1579      break;      break;
1580    
1581      case OP_DIGIT:      case OP_DIGIT:
1582      if (eptr >= md->end_subject)      if (eptr >= md->end_subject)
1583        {        {
1584        SCHECK_PARTIAL();        SCHECK_PARTIAL();
1585        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
1586        }        }
1587      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
1588      if (      if (
1589  #ifdef SUPPORT_UTF8  #ifdef SUPPORT_UTF8
# Line 1593  for (;;) Line 1596  for (;;)
1596      break;      break;
1597    
1598      case OP_NOT_WHITESPACE:      case OP_NOT_WHITESPACE:
1599      if (eptr >= md->end_subject)      if (eptr >= md->end_subject)
1600        {        {
1601        SCHECK_PARTIAL();        SCHECK_PARTIAL();
1602        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
1603        }        }
1604      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
1605      if (      if (
1606  #ifdef SUPPORT_UTF8  #ifdef SUPPORT_UTF8
# Line 1610  for (;;) Line 1613  for (;;)
1613      break;      break;
1614    
1615      case OP_WHITESPACE:      case OP_WHITESPACE:
1616      if (eptr >= md->end_subject)      if (eptr >= md->end_subject)
1617        {        {
1618        SCHECK_PARTIAL();        SCHECK_PARTIAL();
1619        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
1620        }        }
1621      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
1622      if (      if (
1623  #ifdef SUPPORT_UTF8  #ifdef SUPPORT_UTF8
# Line 1627  for (;;) Line 1630  for (;;)
1630      break;      break;
1631    
1632      case OP_NOT_WORDCHAR:      case OP_NOT_WORDCHAR:
1633      if (eptr >= md->end_subject)      if (eptr >= md->end_subject)
1634        {        {
1635        SCHECK_PARTIAL();        SCHECK_PARTIAL();
1636        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
1637        }        }
1638      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
1639      if (      if (
1640  #ifdef SUPPORT_UTF8  #ifdef SUPPORT_UTF8
# Line 1644  for (;;) Line 1647  for (;;)
1647      break;      break;
1648    
1649      case OP_WORDCHAR:      case OP_WORDCHAR:
1650      if (eptr >= md->end_subject)      if (eptr >= md->end_subject)
1651        {        {
1652        SCHECK_PARTIAL();        SCHECK_PARTIAL();
1653        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
1654        }        }
1655      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
1656      if (      if (
1657  #ifdef SUPPORT_UTF8  #ifdef SUPPORT_UTF8
# Line 1661  for (;;) Line 1664  for (;;)
1664      break;      break;
1665    
1666      case OP_ANYNL:      case OP_ANYNL:
1667      if (eptr >= md->end_subject)      if (eptr >= md->end_subject)
1668        {        {
1669        SCHECK_PARTIAL();        SCHECK_PARTIAL();
1670        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
1671        }        }
1672      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
1673      switch(c)      switch(c)
1674        {        {
# Line 1689  for (;;) Line 1692  for (;;)
1692      break;      break;
1693    
1694      case OP_NOT_HSPACE:      case OP_NOT_HSPACE:
1695      if (eptr >= md->end_subject)      if (eptr >= md->end_subject)
1696        {        {
1697        SCHECK_PARTIAL();        SCHECK_PARTIAL();
1698        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
1699        }        }
1700      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
1701      switch(c)      switch(c)
1702        {        {
# Line 1723  for (;;) Line 1726  for (;;)
1726      break;      break;
1727    
1728      case OP_HSPACE:      case OP_HSPACE:
1729      if (eptr >= md->end_subject)      if (eptr >= md->end_subject)
1730        {        {
1731        SCHECK_PARTIAL();        SCHECK_PARTIAL();
1732        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
1733        }        }
1734      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
1735      switch(c)      switch(c)
1736        {        {
# Line 1757  for (;;) Line 1760  for (;;)
1760      break;      break;
1761    
1762      case OP_NOT_VSPACE:      case OP_NOT_VSPACE:
1763      if (eptr >= md->end_subject)      if (eptr >= md->end_subject)
1764        {        {
1765        SCHECK_PARTIAL();        SCHECK_PARTIAL();
1766        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
1767        }        }
1768      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
1769      switch(c)      switch(c)
1770        {        {
# Line 1779  for (;;) Line 1782  for (;;)
1782      break;      break;
1783    
1784      case OP_VSPACE:      case OP_VSPACE:
1785      if (eptr >= md->end_subject)      if (eptr >= md->end_subject)
1786        {        {
1787        SCHECK_PARTIAL();        SCHECK_PARTIAL();
1788        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
1789        }        }
1790      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
1791      switch(c)      switch(c)
1792        {        {
# Line 1806  for (;;) Line 1809  for (;;)
1809    
1810      case OP_PROP:      case OP_PROP:
1811      case OP_NOTPROP:      case OP_NOTPROP:
1812      if (eptr >= md->end_subject)      if (eptr >= md->end_subject)
1813        {        {
1814        SCHECK_PARTIAL();        SCHECK_PARTIAL();
1815        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
1816        }        }
1817      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
1818        {        {
1819        const ucd_record *prop = GET_UCD(c);        const ucd_record *prop = GET_UCD(c);
# Line 1855  for (;;) Line 1858  for (;;)
1858      is in the binary; otherwise a compile-time error occurs. */      is in the binary; otherwise a compile-time error occurs. */
1859    
1860      case OP_EXTUNI:      case OP_EXTUNI:
1861      if (eptr >= md->end_subject)      if (eptr >= md->end_subject)
1862        {        {
1863        SCHECK_PARTIAL();        SCHECK_PARTIAL();
1864        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
1865        }        }
1866      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
1867        {        {
1868        int category = UCD_CATEGORY(c);        int category = UCD_CATEGORY(c);
# Line 1939  for (;;) Line 1942  for (;;)
1942          break;          break;
1943    
1944          default:               /* No repeat follows */          default:               /* No repeat follows */
1945          if (!match_ref(offset, eptr, length, md, ims))          if (!match_ref(offset, eptr, length, md, ims))
1946            {            {
1947            CHECK_PARTIAL();            CHECK_PARTIAL();
1948            RRETURN(MATCH_NOMATCH);            RRETURN(MATCH_NOMATCH);
1949            }            }
1950          eptr += length;          eptr += length;
1951          continue;              /* With the main loop */          continue;              /* With the main loop */
1952          }          }
1953    
1954        /* If the length of the reference is zero, just continue with the        /* If the length of the reference is zero, just continue with the
1955        main loop. */        main loop. */
1956    
1957        if (length == 0) continue;        if (length == 0) continue;
1958    
1959        /* First, ensure the minimum number of matches are present. We get back        /* First, ensure the minimum number of matches are present. We get back
# Line 2326  for (;;) Line 2329  for (;;)
2329        length = 1;        length = 1;
2330        ecode++;        ecode++;
2331        GETCHARLEN(fc, ecode, length);        GETCHARLEN(fc, ecode, length);
2332        if (length > md->end_subject - eptr)        if (length > md->end_subject - eptr)
2333          {          {
2334          CHECK_PARTIAL();             /* Not SCHECK_PARTIAL() */          CHECK_PARTIAL();             /* Not SCHECK_PARTIAL() */
2335          RRETURN(MATCH_NOMATCH);          RRETURN(MATCH_NOMATCH);
2336          }          }
2337        while (length-- > 0) if (*ecode++ != *eptr++) RRETURN(MATCH_NOMATCH);        while (length-- > 0) if (*ecode++ != *eptr++) RRETURN(MATCH_NOMATCH);
2338        }        }
2339      else      else
# Line 2338  for (;;) Line 2341  for (;;)
2341    
2342      /* Non-UTF-8 mode */      /* Non-UTF-8 mode */
2343        {        {
2344        if (md->end_subject - eptr < 1)        if (md->end_subject - eptr < 1)
2345          {          {
2346          SCHECK_PARTIAL();            /* This one can use SCHECK_PARTIAL() */          SCHECK_PARTIAL();            /* This one can use SCHECK_PARTIAL() */
2347          RRETURN(MATCH_NOMATCH);          RRETURN(MATCH_NOMATCH);
2348          }          }
2349        if (ecode[1] != *eptr++) RRETURN(MATCH_NOMATCH);        if (ecode[1] != *eptr++) RRETURN(MATCH_NOMATCH);
2350        ecode += 2;        ecode += 2;
2351        }        }
# Line 2358  for (;;) Line 2361  for (;;)
2361        ecode++;        ecode++;
2362        GETCHARLEN(fc, ecode, length);        GETCHARLEN(fc, ecode, length);
2363    
2364        if (length > md->end_subject - eptr)        if (length > md->end_subject - eptr)
2365          {          {
2366          CHECK_PARTIAL();             /* Not SCHECK_PARTIAL() */          CHECK_PARTIAL();             /* Not SCHECK_PARTIAL() */
2367          RRETURN(MATCH_NOMATCH);          RRETURN(MATCH_NOMATCH);
2368          }          }
2369    
2370        /* If the pattern character's value is < 128, we have only one byte, and        /* If the pattern character's value is < 128, we have only one byte, and
2371        can use the fast lookup table. */        can use the fast lookup table. */
# Line 2397  for (;;) Line 2400  for (;;)
2400    
2401      /* Non-UTF-8 mode */      /* Non-UTF-8 mode */
2402        {        {
2403        if (md->end_subject - eptr < 1)        if (md->end_subject - eptr < 1)
2404          {          {
2405          SCHECK_PARTIAL();            /* This one can use SCHECK_PARTIAL() */          SCHECK_PARTIAL();            /* This one can use SCHECK_PARTIAL() */
2406          RRETURN(MATCH_NOMATCH);          RRETURN(MATCH_NOMATCH);
2407          }          }
2408        if (md->lcc[ecode[1]] != md->lcc[*eptr++]) RRETURN(MATCH_NOMATCH);        if (md->lcc[ecode[1]] != md->lcc[*eptr++]) RRETURN(MATCH_NOMATCH);
2409        ecode += 2;        ecode += 2;
2410        }        }
# Line 2455  for (;;) Line 2458  for (;;)
2458      case OP_MINQUERY:      case OP_MINQUERY:
2459      c = *ecode++ - OP_STAR;      c = *ecode++ - OP_STAR;
2460      minimize = (c & 1) != 0;      minimize = (c & 1) != 0;
2461    
2462      min = rep_min[c];                 /* Pick up values from tables; */      min = rep_min[c];                 /* Pick up values from tables; */
2463      max = rep_max[c];                 /* zero for max => infinity */      max = rep_max[c];                 /* zero for max => infinity */
2464      if (max == 0) max = INT_MAX;      if (max == 0) max = INT_MAX;
# Line 2568  for (;;) Line 2571  for (;;)
2571      /* When not in UTF-8 mode, load a single-byte character. */      /* When not in UTF-8 mode, load a single-byte character. */
2572    
2573      fc = *ecode++;      fc = *ecode++;
2574    
2575      /* The value of fc at this point is always less than 256, though we may or      /* The value of fc at this point is always less than 256, though we may or
2576      may not be in UTF-8 mode. The code is duplicated for the caseless and      may not be in UTF-8 mode. The code is duplicated for the caseless and
2577      caseful cases, for speed, since matching characters is likely to be quite      caseful cases, for speed, since matching characters is likely to be quite
# Line 2645  for (;;) Line 2648  for (;;)
2648            }            }
2649          if (fc != *eptr++) RRETURN(MATCH_NOMATCH);          if (fc != *eptr++) RRETURN(MATCH_NOMATCH);
2650          }          }
2651    
2652        if (min == max) continue;        if (min == max) continue;
2653    
2654        if (minimize)        if (minimize)
2655          {          {
2656          for (fi = min;; fi++)          for (fi = min;; fi++)
# Line 2673  for (;;) Line 2676  for (;;)
2676            eptr++;            eptr++;
2677            }            }
2678          if (possessive) continue;          if (possessive) continue;
2679    
2680          while (eptr >= pp)          while (eptr >= pp)
2681            {            {
2682            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM27);            RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM27);
# Line 2689  for (;;) Line 2692  for (;;)
2692      checking can be multibyte. */      checking can be multibyte. */
2693    
2694      case OP_NOT:      case OP_NOT:
2695      if (eptr >= md->end_subject)      if (eptr >= md->end_subject)
2696        {        {
2697        SCHECK_PARTIAL();        SCHECK_PARTIAL();
2698        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
2699        }        }
2700      ecode++;      ecode++;
2701      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
2702      if ((ims & PCRE_CASELESS) != 0)      if ((ims & PCRE_CASELESS) != 0)
# Line 3539  for (;;) Line 3542  for (;;)
3542          break;          break;
3543    
3544          case OP_ALLANY:          case OP_ALLANY:
3545          if (eptr > md->end_subject - min)          if (eptr > md->end_subject - min)
3546            {            {
3547            SCHECK_PARTIAL();            SCHECK_PARTIAL();
3548            RRETURN(MATCH_NOMATCH);            RRETURN(MATCH_NOMATCH);
3549            }            }
3550          eptr += min;          eptr += min;
3551          break;          break;
3552    
3553          case OP_ANYBYTE:          case OP_ANYBYTE:
3554          if (eptr > md->end_subject - min)          if (eptr > md->end_subject - min)
3555            {            {
3556            SCHECK_PARTIAL();            SCHECK_PARTIAL();
3557            RRETURN(MATCH_NOMATCH);            RRETURN(MATCH_NOMATCH);
3558            }            }
3559          eptr += min;          eptr += min;
3560          break;          break;
3561    
# Line 5293  for(;;) Line 5296  for(;;)
5296    first starting point for which a partial match was found. */    first starting point for which a partial match was found. */
5297    
5298    md->start_match_ptr = start_match;    md->start_match_ptr = start_match;
5299    md->start_used_ptr = start_match;    md->start_used_ptr = start_match;
5300    md->match_call_count = 0;    md->match_call_count = 0;
5301    rc = match(start_match, md->start_code, start_match, 2, md, ims, NULL, 0, 0);    rc = match(start_match, md->start_code, start_match, 2, md, ims, NULL, 0, 0);
5302    if (md->hitend && start_partial == NULL) start_partial = md->start_used_ptr;    if (md->hitend && start_partial == NULL) start_partial = md->start_used_ptr;
# Line 5326  for(;;) Line 5329  for(;;)
5329      rc = MATCH_NOMATCH;      rc = MATCH_NOMATCH;
5330      goto ENDLOOP;      goto ENDLOOP;
5331    
5332      /* Any other return is some kind of error. */      /* Any other return is either a match, or some kind of error. */
5333    
5334      default:      default:
5335      goto ENDLOOP;      goto ENDLOOP;
# Line 5408  if (rc == MATCH_MATCH) Line 5411  if (rc == MATCH_MATCH)
5411    too many to fit into the vector. */    too many to fit into the vector. */
5412    
5413    rc = md->offset_overflow? 0 : md->end_offset_top/2;    rc = md->offset_overflow? 0 : md->end_offset_top/2;
5414    
5415    /* If there is space, set up the whole thing as substring 0. The value of    /* If there is space, set up the whole thing as substring 0. The value of
5416    md->start_match_ptr might be modified if \K was encountered on the success    md->start_match_ptr might be modified if \K was encountered on the success
5417    matching path. */    matching path. */

Legend:
Removed from v.442  
changed lines
  Added in v.446

  ViewVC Help
Powered by ViewVC 1.1.5