| 1828 |
|
|
| 1829 |
if (c == OP_RECURSE) |
if (c == OP_RECURSE) |
| 1830 |
{ |
{ |
| 1831 |
|
BOOL empty_branch = FALSE; |
| 1832 |
const uschar *scode = cd->start_code + GET(code, 1); |
const uschar *scode = cd->start_code + GET(code, 1); |
| 1833 |
if (GET(scode, 1) == 0) return TRUE; /* Unclosed */ |
if (GET(scode, 1) == 0) return TRUE; /* Unclosed */ |
| 1834 |
do |
do |
| 1835 |
{ |
{ |
| 1836 |
if (!could_be_empty_branch(scode, endcode, utf8, cd)) return FALSE; |
if (could_be_empty_branch(scode, endcode, utf8, cd)) |
| 1837 |
|
{ |
| 1838 |
|
empty_branch = TRUE; |
| 1839 |
|
break; |
| 1840 |
|
} |
| 1841 |
scode += GET(scode, 1); |
scode += GET(scode, 1); |
| 1842 |
} |
} |
| 1843 |
while (*scode == OP_ALT); |
while (*scode == OP_ALT); |
| 1844 |
|
if (!empty_branch) return FALSE; /* All branches are non-empty */ |
| 1845 |
continue; |
continue; |
| 1846 |
} |
} |
| 1847 |
|
|