From 7f904e2c663163e327cbe784a982ac2af8bbd6f3 Mon Sep 17 00:00:00 2001 From: Araq Date: Thu, 10 Oct 2019 10:00:41 +0200 Subject: [PATCH] fixes #12244 [backport] --- compiler/vm.nim | 1 - tests/vm/tmisc_vm.nim | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/compiler/vm.nim b/compiler/vm.nim index b264dfe17a..4589d3a25c 100644 --- a/compiler/vm.nim +++ b/compiler/vm.nim @@ -710,7 +710,6 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg = of rkNode: if regs[ra].node.kind == nkNilLit: stackTrace(c, tos, pc, errNilAccess) - assert nfIsRef in regs[ra].node.flags regs[ra].node[] = regs[rc].regToNode[] regs[ra].node.flags.incl nfIsRef else: stackTrace(c, tos, pc, errNilAccess) diff --git a/tests/vm/tmisc_vm.nim b/tests/vm/tmisc_vm.nim index 7733314dbd..7d7275426c 100644 --- a/tests/vm/tmisc_vm.nim +++ b/tests/vm/tmisc_vm.nim @@ -1,6 +1,8 @@ discard """ output: '''[127, 127, 0, 255] [127, 127, 0, 255] + +(data: 1) ''' nimout: '''caught Exception @@ -180,3 +182,21 @@ static: var stream = initCtsStream(file) parseAtlas(stream) echo "Done!" + + +# bug #12244 + +type + Apple = object + data: int + +func what(x: var Apple) = + x = Apple(data: 1) + +func oh_no(): Apple = + what(result) + +const + vmCrash = oh_no() + +debugEcho vmCrash