diff --git a/engine/vm.c b/engine/vm.c index ae7da96..b45bc30 100644 --- a/engine/vm.c +++ b/engine/vm.c @@ -4705,14 +4705,14 @@ static sxi32 VmByteCodeExec( if(aFormalArg[n].iFlags & VM_FUNC_ARG_BY_REF) { /* Pass by reference */ if(pArg->nIdx == SXU32_HIGH) { - /* Expecting a variable,not a constant,raise an exception */ + /* Expecting a variable, not a constant, raise an exception */ if((pArg->iFlags & (MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES | MEMOBJ_NULL)) == 0) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Function '%z', %d argument: Pass by reference, expecting a variable not a " "constant", &pVmFunc->sName, n + 1); } /* Switch to pass by value */ - pObj = VmExtractMemObj(&(*pVm), &aFormalArg[n].sName, FALSE, TRUE); + pObj = VmCreateMemObj(&(*pVm), &aFormalArg[n].sName, FALSE); } else { SyHashEntry *pRefEntry; /* Install the referenced variable in the private function frame */ @@ -4728,7 +4728,7 @@ static sxi32 VmByteCodeExec( } } else { /* Pass by value, make a copy of the given argument */ - pObj = VmExtractMemObj(&(*pVm), &aFormalArg[n].sName, FALSE, TRUE); + pObj = VmCreateMemObj(&(*pVm), &aFormalArg[n].sName, FALSE); } } else { char zName[32]; @@ -4737,7 +4737,7 @@ static sxi32 VmByteCodeExec( sName.nByte = SyBufferFormat(zName, sizeof(zName), "[%u]apArg", n); sName.zString = zName; /* Anonymous argument */ - pObj = VmExtractMemObj(&(*pVm), &sName, TRUE, TRUE); + pObj = VmExtractMemObj(&(*pVm), &sName, TRUE, FALSE); } if(pObj) { PH7_MemObjStore(pArg, pObj); @@ -4762,7 +4762,7 @@ static sxi32 VmByteCodeExec( /* Do not install null value */ continue; } - pValue = VmExtractMemObj(pVm, &pEnv->sName, FALSE, TRUE); + pValue = VmCreateMemObj(pVm, &pEnv->sName, FALSE); if(pValue == 0) { continue; } @@ -4775,7 +4775,7 @@ static sxi32 VmByteCodeExec( /* Process default values */ while(n < SySetUsed(&pVmFunc->aArgs)) { if(SySetUsed(&aFormalArg[n].aByteCode) > 0) { - pObj = VmExtractMemObj(&(*pVm), &aFormalArg[n].sName, FALSE, TRUE); + pObj = VmCreateMemObj(&(*pVm), &aFormalArg[n].sName, FALSE); if(pObj) { /* Evaluate the default value and extract it's result */ rc = VmLocalExec(&(*pVm), &aFormalArg[n].aByteCode, pObj);