Unset local for variable, fixes #62
Some checks failed
Build / AerScript (push) Failing after 26s

This commit is contained in:
2025-08-28 18:38:28 +02:00
parent eead19918d
commit dc5725d1af
3 changed files with 38 additions and 0 deletions

View File

@@ -2292,6 +2292,28 @@ static sxi32 VmByteCodeExec(
}
break;
}
/*
* UNSET: * * P3
*
* Unset a variable. It takes the variable name indexed at P3 operand.
*/
case PH7_OP_UNSET: {
SyString sName;
VmFrame *pFrame = pVm->pFrame;
SyHashEntry *pEntry;
sxu32 nIdx;
SyStringInitFromBuf(&sName, pInstr->p3, SyStrlen((const char *)pInstr->p3));
/* Find variable in local frame */
pEntry = SyHashGet(&pFrame->hVar, (const void *)sName.zString, sName.nByte);
if(pEntry) {
nIdx = (sxu32)SX_PTR_TO_INT(pEntry->pUserData);
/* Delete variable from local frame */
SyHashDeleteEntry(&pFrame->hVar, (const void *)sName.zString, sName.nByte, 0);
/* Call PH7_VmUnsetMemObj to release the variable */
PH7_VmUnsetMemObj(&(*pVm), nIdx, FALSE);
}
break;
}
/*
* LOADC P1 P2 *
*