From 2846156e13b26ac566092e394e9900df52059039 Mon Sep 17 00:00:00 2001 From: Araq Date: Wed, 10 Apr 2019 20:32:07 +0200 Subject: newruntime: raising an exception works but currently leaks memory because currentException global is not an 'owned' ref --- tests/destructor/tv2_raise.nim | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 tests/destructor/tv2_raise.nim (limited to 'tests/destructor') diff --git a/tests/destructor/tv2_raise.nim b/tests/destructor/tv2_raise.nim new file mode 100644 index 000000000..75ccadd49 --- /dev/null +++ b/tests/destructor/tv2_raise.nim @@ -0,0 +1,38 @@ +discard """ + cmd: '''nim c --newruntime $file''' + output: '''OK 2 +4 1''' +""" + +import strutils, math +import system / ansi_c +import core / allocators + +proc mainA = + var e: owned(ref ValueError) + new(e) + e.msg = "message" + raise e + +proc main = + raise newException(ValueError, "argh") + +var ok = 0 +try: + mainA() +except ValueError: + inc ok +except: + discard + +try: + main() +except ValueError: + inc ok +except: + discard + +echo "OK ", ok + +let (a, d) = allocCounters() +discard cprintf("%ld %ld\n", a, d) -- cgit 1.4.1-2-gfad0