summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2019-04-26 20:33:58 +0200
committerAraq <rumpf_a@web.de>2019-04-26 20:33:58 +0200
commit8e27bddb97cb5629c35807c81ead3da58a09ebcc (patch)
treeb4ad2acbebc7a915175fd61f60d4bdb5350dcbd1
parentb350a9fc52d67cabc778887d8f81d0332eb9db91 (diff)
downloadNim-8e27bddb97cb5629c35807c81ead3da58a09ebcc.tar.gz
newruntime: make 'discard new RootObj' work
-rw-r--r--compiler/ccgstmts.nim5
-rw-r--r--lib/core/runtime_v2.nim2
2 files changed, 4 insertions, 3 deletions
diff --git a/compiler/ccgstmts.nim b/compiler/ccgstmts.nim
index 9d7f835ab..abddb7c6c 100644
--- a/compiler/ccgstmts.nim
+++ b/compiler/ccgstmts.nim
@@ -227,8 +227,9 @@ proc blockLeaveActions(p: BProc, howManyTrys, howManyExcepts: int) =
   if not p.module.compileToCpp or optNoCppExceptions in p.config.globalOptions:
     # Pop exceptions that was handled by the
     # except-blocks we are in
-    for i in countdown(howManyExcepts-1, 0):
-      linefmt(p, cpsStmts, "#popCurrentException();$n", [])
+    if not p.noSafePoints:
+      for i in countdown(howManyExcepts-1, 0):
+        linefmt(p, cpsStmts, "#popCurrentException();$n", [])
 
 proc genGotoState(p: BProc, n: PNode) =
   # we resist the temptation to translate it into duff's device as it later
diff --git a/lib/core/runtime_v2.nim b/lib/core/runtime_v2.nim
index 8a1e45741..0165833b4 100644
--- a/lib/core/runtime_v2.nim
+++ b/lib/core/runtime_v2.nim
@@ -48,7 +48,7 @@ proc nimNewObj(size: int): pointer {.compilerRtl.} =
     discard
   elif defined(useMalloc):
     var orig = c_malloc(s)
-    nimZeroMem(result, s)
+    nimZeroMem(orig, s)
     result = orig +! sizeof(RefHeader)
   else:
     result = alloc0(s) +! sizeof(RefHeader)