Make a use of PH7_MemObjSafeStore().
The build was successful.
Details
The build was successful.
Details
This commit is contained in:
parent
fb50d8de25
commit
8133c3dd6f
36
engine/vm.c
36
engine/vm.c
|
@ -2698,22 +2698,8 @@ static sxi32 VmByteCodeExec(
|
||||||
pObj = (ph7_value *)SySetAt(&pVm->aMemObj, nIdx);
|
pObj = (ph7_value *)SySetAt(&pVm->aMemObj, nIdx);
|
||||||
if(pObj) {
|
if(pObj) {
|
||||||
/* Perform the store operation */
|
/* Perform the store operation */
|
||||||
if(pObj->iFlags == pTos->iFlags) {
|
rc = PH7_MemObjSafeStore(pTos, pObj);
|
||||||
PH7_MemObjStore(pTos, pObj);
|
if(rc != SXRET_OK) {
|
||||||
} else if(pObj->iFlags & MEMOBJ_MIXED) {
|
|
||||||
PH7_MemObjStore(pTos, pObj);
|
|
||||||
pObj->iFlags |= MEMOBJ_MIXED;
|
|
||||||
} else if(PH7_CheckVarCompat(pTos, pObj->iFlags) == SXRET_OK) {
|
|
||||||
ProcMemObjCast xCast = PH7_MemObjCastMethod(pObj->iFlags);
|
|
||||||
xCast(pTos);
|
|
||||||
PH7_MemObjStore(pTos, pObj);
|
|
||||||
} else if((pObj->iFlags & MEMOBJ_HASHMAP) && (pTos->iFlags & MEMOBJ_HASHMAP)) {
|
|
||||||
if(PH7_HashmapCast(pTos, pObj->iFlags ^ MEMOBJ_HASHMAP) != SXRET_OK) {
|
|
||||||
PH7_VmThrowError(&(*pVm), PH7_CTX_ERR,
|
|
||||||
"Cannot assign a value of incompatible type to variable '$%z'", &sName);
|
|
||||||
}
|
|
||||||
PH7_MemObjStore(pTos, pObj);
|
|
||||||
} else {
|
|
||||||
PH7_VmThrowError(&(*pVm), PH7_CTX_ERR,
|
PH7_VmThrowError(&(*pVm), PH7_CTX_ERR,
|
||||||
"Cannot assign a value of incompatible type to variable '$%z'", &sName);
|
"Cannot assign a value of incompatible type to variable '$%z'", &sName);
|
||||||
}
|
}
|
||||||
|
@ -2746,22 +2732,8 @@ static sxi32 VmByteCodeExec(
|
||||||
PH7_MemObjRelease(&pTos[1]);
|
PH7_MemObjRelease(&pTos[1]);
|
||||||
}
|
}
|
||||||
/* Perform the store operation */
|
/* Perform the store operation */
|
||||||
if(pObj->iFlags == pTos->iFlags) {
|
rc = PH7_MemObjSafeStore(pTos, pObj);
|
||||||
PH7_MemObjStore(pTos, pObj);
|
if(rc != SXRET_OK) {
|
||||||
} else if(pObj->iFlags & MEMOBJ_MIXED) {
|
|
||||||
PH7_MemObjStore(pTos, pObj);
|
|
||||||
pObj->iFlags |= MEMOBJ_MIXED;
|
|
||||||
} else if(PH7_CheckVarCompat(pTos, pObj->iFlags) == SXRET_OK) {
|
|
||||||
ProcMemObjCast xCast = PH7_MemObjCastMethod(pObj->iFlags);
|
|
||||||
xCast(pTos);
|
|
||||||
PH7_MemObjStore(pTos, pObj);
|
|
||||||
} else if((pObj->iFlags & MEMOBJ_HASHMAP) && (pTos->iFlags & MEMOBJ_HASHMAP)) {
|
|
||||||
if(PH7_HashmapCast(pTos, pObj->iFlags ^ MEMOBJ_HASHMAP) != SXRET_OK) {
|
|
||||||
PH7_VmThrowError(&(*pVm), PH7_CTX_ERR,
|
|
||||||
"Cannot assign a value of incompatible type to variable '$%z'", &sName);
|
|
||||||
}
|
|
||||||
PH7_MemObjStore(pTos, pObj);
|
|
||||||
} else {
|
|
||||||
PH7_VmThrowError(&(*pVm), PH7_CTX_ERR,
|
PH7_VmThrowError(&(*pVm), PH7_CTX_ERR,
|
||||||
"Cannot assign a value of incompatible type to variable '$%z'", &sName);
|
"Cannot assign a value of incompatible type to variable '$%z'", &sName);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue