Fix static and non-static class attributes. Now access to non-initialized arrays member does not result in segmentation fault.
All checks were successful
The build was successful.

This commit is contained in:
Rafal Kupiec 2019-04-04 18:15:41 +02:00
부모 c789b875f4
커밋 9880f9963e
로그인 계정: belliash
GPG 키 ID: 4E829243E0CFE6B4

파일 보기

@ -644,6 +644,13 @@ static sxi32 VmMountUserClass(
if(rc != SXRET_OK) { if(rc != SXRET_OK) {
PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Cannot assign a value of incompatible type to variable '%z::$%z'", &pClass->sName, &pAttr->sName); PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Cannot assign a value of incompatible type to variable '%z::$%z'", &pClass->sName, &pAttr->sName);
} }
} else if(pMemObj->iFlags & MEMOBJ_HASHMAP) {
ph7_hashmap *pMap;
pMap = PH7_NewHashmap(&(*pVm), 0, 0);
if(pMap == 0) {
PH7_VmMemoryError(&(*pVm));
}
pMemObj->x.pOther = pMap;
} }
/* Free up memory */ /* Free up memory */
PH7_MemObjRelease(pResult); PH7_MemObjRelease(pResult);
@ -712,6 +719,13 @@ PH7_PRIVATE sxi32 PH7_VmCreateClassInstanceFrame(
if(rc != SXRET_OK) { if(rc != SXRET_OK) {
PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Cannot assign a value of incompatible type to variable '%z::$%z'", &pClass->sName, &pAttr->sName); PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Cannot assign a value of incompatible type to variable '%z::$%z'", &pClass->sName, &pAttr->sName);
} }
} else if(pMemObj->iFlags & MEMOBJ_HASHMAP) {
ph7_hashmap *pMap;
pMap = PH7_NewHashmap(&(*pVm), 0, 0);
if(pMap == 0) {
PH7_VmMemoryError(&(*pVm));
}
pMemObj->x.pOther = pMap;
} }
/* Free up memory */ /* Free up memory */
PH7_MemObjRelease(pResult); PH7_MemObjRelease(pResult);