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 |
|
|