1370 |
const uschar *ccode; |
const uschar *ccode; |
1371 |
|
|
1372 |
c = *code; |
c = *code; |
1373 |
|
|
1374 |
|
/* Groups with zero repeats can of course be empty; skip them. */ |
1375 |
|
|
1376 |
|
if (c == OP_BRAZERO || c == OP_BRAMINZERO) |
1377 |
|
{ |
1378 |
|
do code += GET(code, 1); while (*code == OP_ALT); |
1379 |
|
c = *code; |
1380 |
|
continue; |
1381 |
|
} |
1382 |
|
|
1383 |
|
/* For other groups, scan the branches. */ |
1384 |
|
|
1385 |
if (c == OP_BRA || c == OP_CBRA || c == OP_ONCE) |
if (c == OP_BRA || c == OP_CBRA || c == OP_ONCE) |
1386 |
{ |
{ |
1387 |
BOOL empty_branch; |
BOOL empty_branch; |
1398 |
} |
} |
1399 |
while (*code == OP_ALT); |
while (*code == OP_ALT); |
1400 |
if (!empty_branch) return FALSE; /* All branches are non-empty */ |
if (!empty_branch) return FALSE; /* All branches are non-empty */ |
1401 |
|
c = *code; |
|
/* Move past the KET and fudge things so that the increment in the "for" |
|
|
above has no effect. */ |
|
|
|
|
|
c = OP_END; |
|
|
code += 1 + LINK_SIZE - _pcre_OP_lengths[c]; |
|
1402 |
continue; |
continue; |
1403 |
} |
} |
1404 |
|
|