| 1970 |
continue; |
continue; |
| 1971 |
|
|
| 1972 |
case 'N': |
case 'N': |
| 1973 |
options |= PCRE_NOTEMPTY; |
if ((options & PCRE_NOTEMPTY) != 0) |
| 1974 |
|
options = (options & ~PCRE_NOTEMPTY) | PCRE_NOTEMPTY_ATSTART; |
| 1975 |
|
else |
| 1976 |
|
options |= PCRE_NOTEMPTY; |
| 1977 |
continue; |
continue; |
| 1978 |
|
|
| 1979 |
case 'O': |
case 'O': |
| 2446 |
if (!do_g && !do_G) break; |
if (!do_g && !do_G) break; |
| 2447 |
|
|
| 2448 |
/* If we have matched an empty string, first check to see if we are at |
/* If we have matched an empty string, first check to see if we are at |
| 2449 |
the end of the subject. If so, the /g loop is over. Otherwise, mimic |
the end of the subject. If so, the /g loop is over. Otherwise, mimic what |
| 2450 |
what Perl's /g options does. This turns out to be rather cunning. First |
Perl's /g options does. This turns out to be rather cunning. First we set |
| 2451 |
we set PCRE_NOTEMPTY and PCRE_ANCHORED and try the match again at the |
PCRE_NOTEMPTY_ATSTART and PCRE_ANCHORED and try the match again at the |
| 2452 |
same point. If this fails (picked up above) we advance to the next |
same point. If this fails (picked up above) we advance to the next |
| 2453 |
character. */ |
character. */ |
| 2454 |
|
|
| 2457 |
if (use_offsets[0] == use_offsets[1]) |
if (use_offsets[0] == use_offsets[1]) |
| 2458 |
{ |
{ |
| 2459 |
if (use_offsets[0] == len) break; |
if (use_offsets[0] == len) break; |
| 2460 |
g_notempty = PCRE_NOTEMPTY | PCRE_ANCHORED; |
g_notempty = PCRE_NOTEMPTY_ATSTART | PCRE_ANCHORED; |
| 2461 |
} |
} |
| 2462 |
|
|
| 2463 |
/* For /g, update the start offset, leaving the rest alone */ |
/* For /g, update the start offset, leaving the rest alone */ |