# HG changeset patch # User lindquist # Date 1193866539 -3600 # Node ID 7299ff502248581694e34ab436667d07df199dd2 # Parent 875617f89c51bcbb4421a6079138870ab0a1f4f9 [svn r84] Fixed: Returning from a void function from inside the try of a try-finally block was broken. diff -r 875617f89c51 -r 7299ff502248 gen/statements.c --- a/gen/statements.c Wed Oct 31 22:20:19 2007 +0100 +++ b/gen/statements.c Wed Oct 31 22:35:39 2007 +0100 @@ -128,7 +128,7 @@ new llvm::ReturnInst(p->scopebb()); } else { - new llvm::BranchInst(fin.back().bb); + new llvm::BranchInst(fin.back().bb, p->scopebb()); fin.back().ret = true; } } diff -r 875617f89c51 -r 7299ff502248 test/bug45.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/bug45.d Wed Oct 31 22:35:39 2007 +0100 @@ -0,0 +1,11 @@ +module bug45; + +void foo() { + int bar; + scope(exit) { bar++; } + if (bar) return; +} + +void main() { + foo(); +}