Mercurial > p > unluac > hgcode
changeset 477:8280e6bfafc0
"else break" decl split test was insufficient
Was only testing the if-else block, but e.g. an outer decl could start before and end in the else clause to be split but not detected
(maybe depending on the exact configuration of the split test)
author | tehtmi |
---|---|
date | Thu, 06 Jan 2022 23:28:47 -0800 |
parents | de789ec7a77e |
children | 42bb160e9ea7 |
files | src/unluac/decompile/ControlFlowHandler.java |
diffstat | 1 files changed, 3 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/unluac/decompile/ControlFlowHandler.java Thu Jan 06 22:33:00 2022 -0800 +++ b/src/unluac/decompile/ControlFlowHandler.java Thu Jan 06 23:28:47 2022 -0800 @@ -991,7 +991,9 @@ state.resolved[hanger.targetSecond] == state.resolved[breakable.end] && line + 1 < state.branches.length && state.branches[line + 1] != null && state.branches[line + 1].targetFirst == hanger.targetSecond - && !splits_decl(hanger.line, hanger.targetFirst, b.line, declList) + && !splits_decl(hanger.line, hanger.targetFirst, b.line, declList) // if else + && !splits_decl(b.line, b.line + 1, b.line + 2, declList) // else break + && !splits_decl(hanger.line, hanger.targetFirst, b.line + 2, declList) // full ) { // resolve intervening hangers for(int j = i; j > 0; j--) {