mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-14 23:33:28 +00:00
Checked field expressions, such as an object variant field access results in occasionally broken address analysis crashing the VM. This guard added here mimics guarded access in ldObjAddr as well. This is to prevent a crash, while a fix is devised.
This commit is contained in:
@@ -711,7 +711,7 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
|
||||
of opcLdObj:
|
||||
# a = b.c
|
||||
decodeBC(rkNode)
|
||||
let src = regs[rb].node
|
||||
let src = if regs[rb].kind == rkNode: regs[rb].node else: regs[rb].nodeAddr[]
|
||||
case src.kind
|
||||
of nkEmpty..nkNilLit:
|
||||
# for nkPtrLit, this could be supported in the future, use something like:
|
||||
|
||||
10
tests/vm/t17039.nim
Normal file
10
tests/vm/t17039.nim
Normal file
@@ -0,0 +1,10 @@
|
||||
type
|
||||
Obj1 = object
|
||||
case kind: bool
|
||||
of false:
|
||||
field: seq[int]
|
||||
else: discard
|
||||
|
||||
static:
|
||||
var obj1 = Obj1()
|
||||
obj1.field.add(@[])
|
||||
Reference in New Issue
Block a user