From b5eb268ce114cc91fd4ea301974629324beaa08c Mon Sep 17 00:00:00 2001 From: belliash Date: Mon, 24 Sep 2018 19:17:46 +0200 Subject: [PATCH] Do not allow to set a value of different type to the variable. --- engine/vm.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/engine/vm.c b/engine/vm.c index 1df835c..83274eb 100644 --- a/engine/vm.c +++ b/engine/vm.c @@ -2731,7 +2731,15 @@ static sxi32 VmByteCodeExec( PH7_MemObjRelease(&pTos[1]); } /* Perform the store operation */ - PH7_MemObjStore(pTos, pObj); + if(pObj->iFlags == pTos->iFlags) { + PH7_MemObjStore(pTos, pObj); + } else if(pObj->iFlags & MEMOBJ_MIXED) { + PH7_MemObjStore(pTos, pObj); + pObj->iFlags |= MEMOBJ_MIXED; + } else { + PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, + "Cannot assign a value of incompatible type to variable '$%z'", &sName); + } break; } /*