/[pcre]/code/trunk/pcre_dfa_exec.c
ViewVC logotype

Diff of /code/trunk/pcre_dfa_exec.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 178 by ph10, Wed Jun 13 08:44:34 2007 UTC revision 182 by ph10, Wed Jun 13 15:09:54 2007 UTC
# Line 63  applications. */ Line 63  applications. */
63    
64  /* These are offsets that are used to turn the OP_TYPESTAR and friends opcodes  /* These are offsets that are used to turn the OP_TYPESTAR and friends opcodes
65  into others, under special conditions. A gap of 20 between the blocks should be  into others, under special conditions. A gap of 20 between the blocks should be
66  enough. The resulting opcodes don't have to be less than 256 because they are  enough. The resulting opcodes don't have to be less than 256 because they are
67  never stored, so we push them well clear of the normal opcodes. */  never stored, so we push them well clear of the normal opcodes. */
68    
69  #define OP_PROP_EXTRA       300  #define OP_PROP_EXTRA       300
# Line 585  for (;;) Line 585  for (;;)
585            case OP_ANYNL: codevalue += OP_ANYNL_EXTRA; break;            case OP_ANYNL: codevalue += OP_ANYNL_EXTRA; break;
586            case OP_EXTUNI: codevalue += OP_EXTUNI_EXTRA; break;            case OP_EXTUNI: codevalue += OP_EXTUNI_EXTRA; break;
587            case OP_NOT_HSPACE:            case OP_NOT_HSPACE:
588            case OP_HSPACE: codevalue += OP_HSPACE_EXTRA; break;            case OP_HSPACE: codevalue += OP_HSPACE_EXTRA; break;
589            case OP_NOT_VSPACE:            case OP_NOT_VSPACE:
590            case OP_VSPACE: codevalue += OP_VSPACE_EXTRA; break;            case OP_VSPACE: codevalue += OP_VSPACE_EXTRA; break;
591            default: break;            default: break;
592            }            }
593          }          }
# Line 1105  for (;;) Line 1105  for (;;)
1105        if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }        if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }
1106        if (clen > 0)        if (clen > 0)
1107          {          {
1108          BOOL OK;          BOOL OK;
1109          switch (c)          switch (c)
1110            {            {
1111            case 0x000a:            case 0x000a:
# Line 1116  for (;;) Line 1116  for (;;)
1116            case 0x2028:            case 0x2028:
1117            case 0x2029:            case 0x2029:
1118            OK = TRUE;            OK = TRUE;
1119            break;            break;
1120    
1121            default:            default:
1122            OK = FALSE;            OK = FALSE;
1123            break;            break;
1124            }            }
1125    
1126          if (OK == (d == OP_VSPACE))          if (OK == (d == OP_VSPACE))
1127            {            {
1128            if (count > 0 && codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSPLUS)            if (count > 0 && codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSPLUS)
1129              {              {
1130              active_count--;           /* Remove non-match possibility */              active_count--;           /* Remove non-match possibility */
# Line 1144  for (;;) Line 1144  for (;;)
1144        if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }        if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }
1145        if (clen > 0)        if (clen > 0)
1146          {          {
1147          BOOL OK;          BOOL OK;
1148          switch (c)          switch (c)
1149            {            {
1150            case 0x09:      /* HT */            case 0x09:      /* HT */
# Line 1168  for (;;) Line 1168  for (;;)
1168            case 0x3000:    /* IDEOGRAPHIC SPACE */            case 0x3000:    /* IDEOGRAPHIC SPACE */
1169            OK = TRUE;            OK = TRUE;
1170            break;            break;
1171    
1172            default:            default:
1173            OK = FALSE;            OK = FALSE;
1174            break;            break;
1175            }            }
1176    
1177          if (OK == (d == OP_HSPACE))          if (OK == (d == OP_HSPACE))
1178            {            {
1179            if (count > 0 && codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSPLUS)            if (count > 0 && codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSPLUS)
1180              {              {
1181              active_count--;           /* Remove non-match possibility */              active_count--;           /* Remove non-match possibility */
# Line 1346  for (;;) Line 1346  for (;;)
1346        ADD_ACTIVE(state_offset + 2, 0);        ADD_ACTIVE(state_offset + 2, 0);
1347        if (clen > 0)        if (clen > 0)
1348          {          {
1349          BOOL OK;          BOOL OK;
1350          switch (c)          switch (c)
1351            {            {
1352            case 0x000a:            case 0x000a:
# Line 1358  for (;;) Line 1358  for (;;)
1358            case 0x2029:            case 0x2029:
1359            OK = TRUE;            OK = TRUE;
1360            break;            break;
1361    
1362            default:            default:
1363            OK = FALSE;            OK = FALSE;
1364            break;            break;
1365            }            }
1366          if (OK == (d == OP_VSPACE))          if (OK == (d == OP_VSPACE))
1367            {            {
1368            if (codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSSTAR ||            if (codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSSTAR ||
1369                codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSQUERY)                codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSQUERY)
1370              {              {
# Line 1392  for (;;) Line 1392  for (;;)
1392        ADD_ACTIVE(state_offset + 2, 0);        ADD_ACTIVE(state_offset + 2, 0);
1393        if (clen > 0)        if (clen > 0)
1394          {          {
1395          BOOL OK;          BOOL OK;
1396          switch (c)          switch (c)
1397            {            {
1398            case 0x09:      /* HT */            case 0x09:      /* HT */
# Line 1416  for (;;) Line 1416  for (;;)
1416            case 0x3000:    /* IDEOGRAPHIC SPACE */            case 0x3000:    /* IDEOGRAPHIC SPACE */
1417            OK = TRUE;            OK = TRUE;
1418            break;            break;
1419    
1420            default:            default:
1421            OK = FALSE;            OK = FALSE;
1422            break;            break;
1423            }            }
1424    
1425          if (OK == (d == OP_HSPACE))          if (OK == (d == OP_HSPACE))
1426            {            {
1427            if (codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSSTAR ||            if (codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSSTAR ||
1428                codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSQUERY)                codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSQUERY)
1429              {              {
# Line 1574  for (;;) Line 1574  for (;;)
1574        count = current_state->count;  /* Number already matched */        count = current_state->count;  /* Number already matched */
1575        if (clen > 0)        if (clen > 0)
1576          {          {
1577          BOOL OK;          BOOL OK;
1578          switch (c)          switch (c)
1579            {            {
1580            case 0x000a:            case 0x000a:
# Line 1586  for (;;) Line 1586  for (;;)
1586            case 0x2029:            case 0x2029:
1587            OK = TRUE;            OK = TRUE;
1588            break;            break;
1589    
1590            default:            default:
1591            OK = FALSE;            OK = FALSE;
1592            }            }
1593    
1594          if (OK == (d == OP_VSPACE))          if (OK == (d == OP_VSPACE))
1595            {            {
1596            if (codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSUPTO)            if (codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSUPTO)
1597              {              {
1598              active_count--;           /* Remove non-match possibility */              active_count--;           /* Remove non-match possibility */
# Line 1616  for (;;) Line 1616  for (;;)
1616        count = current_state->count;  /* Number already matched */        count = current_state->count;  /* Number already matched */
1617        if (clen > 0)        if (clen > 0)
1618          {          {
1619          BOOL OK;          BOOL OK;
1620          switch (c)          switch (c)
1621            {            {
1622            case 0x09:      /* HT */            case 0x09:      /* HT */
# Line 1640  for (;;) Line 1640  for (;;)
1640            case 0x3000:    /* IDEOGRAPHIC SPACE */            case 0x3000:    /* IDEOGRAPHIC SPACE */
1641            OK = TRUE;            OK = TRUE;
1642            break;            break;
1643    
1644            default:            default:
1645            OK = FALSE;            OK = FALSE;
1646            break;            break;
1647            }            }
1648    
1649          if (OK == (d == OP_HSPACE))          if (OK == (d == OP_HSPACE))
1650            {            {
1651            if (codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSUPTO)            if (codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSUPTO)
1652              {              {
1653              active_count--;           /* Remove non-match possibility */              active_count--;           /* Remove non-match possibility */
# Line 1771  for (;;) Line 1771  for (;;)
1771          case 0x2028:          case 0x2028:
1772          case 0x2029:          case 0x2029:
1773          break;          break;
1774    
1775          default:          default:
1776          ADD_NEW(state_offset + 1, 0);          ADD_NEW(state_offset + 1, 0);
1777          break;          break;
1778          }          }
# Line 1791  for (;;) Line 1791  for (;;)
1791          case 0x2029:          case 0x2029:
1792          ADD_NEW(state_offset + 1, 0);          ADD_NEW(state_offset + 1, 0);
1793          break;          break;
1794    
1795          default: break;          default: break;
1796          }          }
1797        break;        break;
# Line 1820  for (;;) Line 1820  for (;;)
1820          case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */          case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */
1821          case 0x3000:    /* IDEOGRAPHIC SPACE */          case 0x3000:    /* IDEOGRAPHIC SPACE */
1822          break;          break;
1823    
1824          default:          default:
1825          ADD_NEW(state_offset + 1, 0);          ADD_NEW(state_offset + 1, 0);
1826          break;          break;
1827          }          }

Legend:
Removed from v.178  
changed lines
  Added in v.182

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12