diff options
author | ringabout <43030857+ringabout@users.noreply.github.com> | 2023-09-11 16:54:41 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-11 10:54:41 +0200 |
commit | b1a8d6976ff41a1cde84647b7dbade9316fbcecf (patch) | |
tree | 5d5f3e39a4df6cba464c69c99abb2684047f2242 /compiler/vmgen.nim | |
parent | fbb5ac512cd03a67a3364469132a881341e10e1c (diff) | |
download | Nim-b1a8d6976ff41a1cde84647b7dbade9316fbcecf.tar.gz |
fixes the `discVal` register is used after free in vmgen (#22688)
follow up https://github.com/nim-lang/Nim/pull/11955
Diffstat (limited to 'compiler/vmgen.nim')
-rw-r--r-- | compiler/vmgen.nim | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/vmgen.nim b/compiler/vmgen.nim index 05c0d2a67..2e54812a0 100644 --- a/compiler/vmgen.nim +++ b/compiler/vmgen.nim @@ -1822,7 +1822,6 @@ proc genCheckedObjAccessAux(c: PCtx; n: PNode; dest: var TDest; flags: TGenFlags let setLit = c.genx(checkExpr[1]) var rs = c.getTemp(getSysType(c.graph, n.info, tyBool)) c.gABC(n, opcContainsSet, rs, setLit, discVal) - c.freeTemp(discVal) c.freeTemp(setLit) # If the check fails let the user know let lab1 = c.xjmp(n, if negCheck: opcFJmp else: opcTJmp, rs) @@ -1835,6 +1834,7 @@ proc genCheckedObjAccessAux(c: PCtx; n: PNode; dest: var TDest; flags: TGenFlags strLit.typ = strType c.genLit(strLit, msgReg) c.gABC(n, opcInvalidField, msgReg, discVal) + c.freeTemp(discVal) c.freeTemp(msgReg) c.patch(lab1) |