diff options
author | Araq <rumpf_a@web.de> | 2019-04-26 20:33:58 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2019-04-26 20:33:58 +0200 |
commit | 8e27bddb97cb5629c35807c81ead3da58a09ebcc (patch) | |
tree | b4ad2acbebc7a915175fd61f60d4bdb5350dcbd1 | |
parent | b350a9fc52d67cabc778887d8f81d0332eb9db91 (diff) | |
download | Nim-8e27bddb97cb5629c35807c81ead3da58a09ebcc.tar.gz |
newruntime: make 'discard new RootObj' work
-rw-r--r-- | compiler/ccgstmts.nim | 5 | ||||
-rw-r--r-- | lib/core/runtime_v2.nim | 2 |
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) |