From 29fbf111a878db0ff095f8046a4de9e0f851d466 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Thu, 7 Feb 2019 17:07:35 +0100 Subject: [PATCH] Fix codegen when debugger is enabled (#10595) Decrement the frame length before closing the parent scope. Fixes #10589 --- compiler/ccgstmts.nim | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/compiler/ccgstmts.nim b/compiler/ccgstmts.nim index 6c33b302d2..382ad6a8ed 100644 --- a/compiler/ccgstmts.nim +++ b/compiler/ccgstmts.nim @@ -124,13 +124,14 @@ proc endBlock(p: BProc, blockEnd: Rope) = proc endBlock(p: BProc) = let topBlock = p.blocks.len - 1 - var blockEnd = if p.blocks[topBlock].label != nil: - ropecg(p.module, "} $1: ;$n", p.blocks[topBlock].label) - else: - ~"}$n" let frameLen = p.blocks[topBlock].frameLen + var blockEnd: Rope if frameLen > 0: blockEnd.addf("FR_.len-=$1;$n", [frameLen.rope]) + if p.blocks[topBlock].label != nil: + blockEnd.addf("} $1: ;$n", [p.blocks[topBlock].label]) + else: + blockEnd.addf("}$n", []) endBlock(p, blockEnd) proc genSimpleBlock(p: BProc, stmts: PNode) {.inline.} =