diff --git a/changelog.md b/changelog.md index 251aca4ab7..2e1795bab5 100644 --- a/changelog.md +++ b/changelog.md @@ -85,7 +85,9 @@ these is ``"" / @[]``. - Accessing the binary zero terminator in Nim's native strings is now invalid. Internally a Nim string still has the trailing zero for - zero-copy interoperability with ``cstring``. + zero-copy interoperability with ``cstring``. Compile your code with the + next switch ``--laxStrings:on`` if you need a transition period. + ### Tool changes diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim index a3a85a3dca..96f9265f17 100644 --- a/compiler/ccgexprs.nim +++ b/compiler/ccgexprs.nim @@ -909,7 +909,7 @@ proc genSeqElem(p: BProc, n, x, y: PNode, d: var TLoc) = if ty.kind in {tyRef, tyPtr}: ty = skipTypes(ty.lastSon, abstractVarRange) # emit range check: if optBoundsCheck in p.options: - if ty.kind == tyString and not defined(nimNoZeroTerminator): + if ty.kind == tyString and (not defined(nimNoZeroTerminator) or optLaxStrings in p.options): linefmt(p, cpsStmts, "if (!$2 || (NU)($1) > (NU)($2->$3)) #raiseIndexError();$n", rdLoc(b), rdLoc(a), lenField(p))