From d9cf68e53c3067b1df92e9520b865063efad8fd5 Mon Sep 17 00:00:00 2001 From: ringabout <43030857+ringabout@users.noreply.github.com> Date: Thu, 21 May 2026 23:07:42 +0800 Subject: [PATCH] fixes #18238; Nested object construction can zero same memory multiple times --- compiler/ccgexprs.nim | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim index 2cf187e687..8992edd48f 100644 --- a/compiler/ccgexprs.nim +++ b/compiler/ccgexprs.nim @@ -1904,7 +1904,9 @@ proc genObjConstr(p: BProc, e: PNode, d: var TLoc) = var tmp: TLoc = default(TLoc) var r: Rope - let needsZeroMem = p.config.selectedGC notin {gcArc, gcAtomicArc, gcOrc, gcYrc} or nfAllFieldsSet notin e.flags + let needsZeroMem = + nfAllFieldsSet notin e.flags or + (optSeqDestructors notin p.config.globalOptions and containsGarbageCollectedRef(t)) if useTemp: tmp = getTemp(p, t) r = rdLoc(tmp)