From 1eae14a3befb97db5bd8f95427b007fc5490b8a4 Mon Sep 17 00:00:00 2001 From: ringabout <43030857+ringabout@users.noreply.github.com> Date: Fri, 17 Oct 2025 23:32:28 +0800 Subject: [PATCH] fixes #25226; VM repr raises RangeDefect for long string under refc (#25230) fixes #25226 `int16` seems to be too small for a reasonable VM program --- compiler/renderer.nim | 4 ++-- tests/vm/tmisc_vm.nim | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/compiler/renderer.nim b/compiler/renderer.nim index 1887e5a1a9..19eb45be8d 100644 --- a/compiler/renderer.nim +++ b/compiler/renderer.nim @@ -30,7 +30,7 @@ type TRenderFlags* = set[TRenderFlag] TRenderTok* = object kind*: TokType - length*: int16 + length*: int32 sym*: PSym Section = enum @@ -154,7 +154,7 @@ proc initSrcGen(renderFlags: TRenderFlags; config: ConfigRef): TSrcGen = ) proc addTok(g: var TSrcGen, kind: TokType, s: string; sym: PSym = nil) = - g.tokens.add TRenderTok(kind: kind, length: int16(s.len), sym: sym) + g.tokens.add TRenderTok(kind: kind, length: int32(s.len), sym: sym) g.buf.add(s) if kind != tkSpaces: inc g.col, s.len diff --git a/tests/vm/tmisc_vm.nim b/tests/vm/tmisc_vm.nim index 6a0c0c33fb..56f2536376 100644 --- a/tests/vm/tmisc_vm.nim +++ b/tests/vm/tmisc_vm.nim @@ -479,3 +479,10 @@ static: xxx() + +static: + var foo: string + for _ in 0 ..< 100_000: + foo.add 'a' + doAssert repr(foo).len == 100_002 +