Fixes for 0.1.1 #56

Merged
belliash merged 10 commits from master into release/v0.1.0 2019-11-02 09:18:14 +01:00
Showing only changes of commit 18b96064e4 - Show all commits

View File

@ -2553,13 +2553,13 @@ static sxi32 VmByteCodeExec(
if(pIdx) { if(pIdx) {
sxu32 nOfft; sxu32 nOfft;
if((pIdx->nType & MEMOBJ_INT) == 0) { if((pIdx->nType & MEMOBJ_INT) == 0) {
/* Force an int cast */ /* No available index */
PH7_MemObjToInteger(pIdx); PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Index was outside the bounds of the array");
} }
nOfft = (sxu32)pIdx->x.iVal; nOfft = (sxu32)pIdx->x.iVal;
if(nOfft >= SyBlobLength(&pTos->sBlob)) { if(nOfft >= SyBlobLength(&pTos->sBlob)) {
/* Invalid offset,load null */ /* No available index */
PH7_MemObjRelease(pTos); PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Index was outside the bounds of the array");
} else { } else {
const char *zData = (const char *)SyBlobData(&pTos->sBlob); const char *zData = (const char *)SyBlobData(&pTos->sBlob);
int c = zData[nOfft]; int c = zData[nOfft];
@ -2567,9 +2567,6 @@ static sxi32 VmByteCodeExec(
MemObjSetType(pTos, MEMOBJ_STRING); MemObjSetType(pTos, MEMOBJ_STRING);
SyBlobAppend(&pTos->sBlob, (const void *)&c, sizeof(char)); SyBlobAppend(&pTos->sBlob, (const void *)&c, sizeof(char));
} }
} else {
/* No available index,load NULL */
MemObjSetType(pTos, MEMOBJ_NULL);
} }
break; break;
} }
@ -2610,9 +2607,8 @@ static sxi32 VmByteCodeExec(
PH7_HashmapUnref(pMap); PH7_HashmapUnref(pMap);
} }
} else { } else {
/* No such entry, load NULL */ /* No available index */
PH7_MemObjRelease(pTos); PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Index was outside the bounds of the array");
pTos->nIdx = SXU32_HIGH;
} }
break; break;
} }