diff --git a/compiler/ccgcalls.nim b/compiler/ccgcalls.nim index 83461350b..33b07a5a7 100644 --- a/compiler/ccgcalls.nim +++ b/compiler/ccgcalls.nim @@ -136,7 +136,7 @@ proc openArrayLoc(p: BProc, n: PNode): Rope = of tyString, tySequence: var t: TLoc t.r = "(*$1)" % [a.rdLoc] - result = "(*$1)$3, (*$1 ? (*$1)->$2 : 0)" % [a.rdLoc, lenExpr(p, t), dataField(p)] + result = "(*$1)$3, $2" % [a.rdLoc, lenExpr(p, t), dataField(p)] of tyArray: result = "$1, $2" % [rdLoc(a), rope(lengthOrd(p.config, lastSon(a.t)))] else: diff --git a/lib/pure/collections/deques.nim b/lib/pure/collections/deques.nim index 409240b37..e8342e208 100644 --- a/lib/pure/collections/deques.nim +++ b/lib/pure/collections/deques.nim @@ -161,10 +161,7 @@ proc peekLast*[T](deq: Deque[T]): T {.inline.} = result = deq.data[(deq.tail - 1) and deq.mask] template destroy(x: untyped) = - when defined(nimNewRuntime) and not supportsCopyMem(type(x)): - `=destroy`(x) - else: - reset(x) + reset(x) proc popFirst*[T](deq: var Deque[T]): T {.inline, discardable.} = ## Remove and returns the first element of the `deq`. diff --git a/lib/system.nim b/lib/system.nim index 52ed524be..832a98976 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -4112,6 +4112,7 @@ template once*(body: untyped): untyped = {.pop.} #{.push warning[GcMem]: off, warning[Uninit]: off.} proc substr*(s: string, first, last: int): string = + let first = max(first, 0) let L = max(min(last, high(s)) - first + 1, 0) result = newString(L) for i in 0 .. L-1: