summary refs log tree commit diff stats
path: root/lib/system/gc_regions.nim
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2018-05-28 11:24:29 +0200
committerAndreas Rumpf <rumpf_a@web.de>2018-05-28 11:24:29 +0200
commit3221ac094398492e09ea618638204793b0990eca (patch)
tree49be51c0fef32460ef4cb022b26d1332d865f3d7 /lib/system/gc_regions.nim
parent7e8eadb6ba9c94ea429ee7178e8cc8fbcbf558ea (diff)
downloadNim-3221ac094398492e09ea618638204793b0990eca.tar.gz
hotfix for --gc:regions
Diffstat (limited to 'lib/system/gc_regions.nim')
-rw-r--r--lib/system/gc_regions.nim3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/system/gc_regions.nim b/lib/system/gc_regions.nim
index 10df0a2cb..83c65e8ce 100644
--- a/lib/system/gc_regions.nim
+++ b/lib/system/gc_regions.nim
@@ -162,6 +162,7 @@ proc allocFast(r: var MemRegion; size: int): pointer =
           return pointer(it)
         prev = it
         it = it.next
+  let size = roundup(size, MemAlign)
   if size > r.remaining:
     allocSlowPath(r, size)
   sysAssert(size <= r.remaining, "size <= r.remaining")
@@ -288,11 +289,13 @@ proc rawNewSeq(r: var MemRegion, typ: PNimType, size: int): pointer =
   result = res +! sizeof(SeqHeader)
 
 proc newObj(typ: PNimType, size: int): pointer {.compilerRtl.} =
+  sysAssert typ.kind notin {tySequence, tyString}, "newObj cannot be used to construct seqs"
   result = rawNewObj(tlRegion, typ, size)
   zeroMem(result, size)
   when defined(memProfiler): nimProfile(size)
 
 proc newObjNoInit(typ: PNimType, size: int): pointer {.compilerRtl.} =
+  sysAssert typ.kind notin {tySequence, tyString}, "newObj cannot be used to construct seqs"
   result = rawNewObj(tlRegion, typ, size)
   when defined(memProfiler): nimProfile(size)