# Diff of /code/tags/pcre-1.08/pcre.c

revision 3 by nigel, Sat Feb 24 21:38:01 2007 UTC revision 5 by nigel, Sat Feb 24 21:38:05 2007 UTC
# Line 228  do { Line 228  do {
228      /* Test an embedded subpattern; if it could not be empty, break the      /* Test an embedded subpattern; if it could not be empty, break the
229      loop. Otherwise carry on in the branch. */      loop. Otherwise carry on in the branch. */
230
231      if ((int)(*cc) >= OP_BRA)      if ((int)(*cc) >= OP_BRA || (int)(*cc) == OP_ONCE)
232        {        {
233        if (!could_be_empty(cc)) break;        if (!could_be_empty(cc)) break;
234        do cc += (cc[1] << 8) + cc[2]; while (*cc == OP_ALT);        do cc += (cc[1] << 8) + cc[2]; while (*cc == OP_ALT);
# Line 272  do { Line 272  do {
272        case OP_MINSTAR:        case OP_MINSTAR:
273        case OP_QUERY:        case OP_QUERY:
274        case OP_MINQUERY:        case OP_MINQUERY:
275          case OP_NOTSTAR:
276          case OP_NOTMINSTAR:
277          case OP_NOTQUERY:
278          case OP_NOTMINQUERY:
279        case OP_TYPESTAR:        case OP_TYPESTAR:
280        case OP_TYPEMINSTAR:        case OP_TYPEMINSTAR:
281        case OP_TYPEQUERY:        case OP_TYPEQUERY:
# Line 292  do { Line 296  do {
296
297        case OP_CLASS:        case OP_CLASS:
298        case OP_REF:        case OP_REF:
299        cc += (*cc == OP_REF)? 2 : 4 + 2 * cc[2] + cc[3];        cc += (*cc == OP_REF)? 2 : 33;
300
301        switch (*cc)        switch (*cc)
302          {          {
# Line 2360  for (;;) Line 2364  for (;;)
2364
2365      /* "Once" brackets are like assertion brackets except that after a match,      /* "Once" brackets are like assertion brackets except that after a match,
2366      the point in the subject string is not moved back. Thus there can never be      the point in the subject string is not moved back. Thus there can never be
2367      a back into the brackets. Check the alternative branches in turn - the      a move back into the brackets. Check the alternative branches in turn - the
2368      matching won't pass the KET for this kind of subpattern. If any one branch      matching won't pass the KET for this kind of subpattern. If any one branch
2369      matches, we carry on, leaving the subject pointer. */      matches, we carry on, leaving the subject pointer. */
2370

Legend:
 Removed from v.3 changed lines Added in v.5