Fixed bug where reading operand bytecode may stop prematurely
This is due to checking for equality instead of just greater than in darr->used against darr->available.
This commit is contained in:
@@ -287,13 +287,13 @@ data_t read_type_from_darr(darr_t *darr, data_type_t type)
|
|||||||
case DATA_TYPE_NIL:
|
case DATA_TYPE_NIL:
|
||||||
break;
|
break;
|
||||||
case DATA_TYPE_BYTE:
|
case DATA_TYPE_BYTE:
|
||||||
if (darr->used >= darr->available)
|
if (darr->used > darr->available)
|
||||||
// TODO: Error (darr has no space left)
|
// TODO: Error (darr has no space left)
|
||||||
return DBYTE(0);
|
return DBYTE(0);
|
||||||
return DBYTE(darr->data[darr->used++]);
|
return DBYTE(darr->data[darr->used++]);
|
||||||
break;
|
break;
|
||||||
case DATA_TYPE_HWORD:
|
case DATA_TYPE_HWORD:
|
||||||
if (darr->used + HWORD_SIZE >= darr->available)
|
if (darr->used + HWORD_SIZE > darr->available)
|
||||||
// TODO: Error (darr has no space left)
|
// TODO: Error (darr has no space left)
|
||||||
return DWORD(0);
|
return DWORD(0);
|
||||||
hword u = 0;
|
hword u = 0;
|
||||||
@@ -302,7 +302,7 @@ data_t read_type_from_darr(darr_t *darr, data_type_t type)
|
|||||||
return DHWORD(u);
|
return DHWORD(u);
|
||||||
break;
|
break;
|
||||||
case DATA_TYPE_WORD:
|
case DATA_TYPE_WORD:
|
||||||
if (darr->used + WORD_SIZE >= darr->available)
|
if (darr->used + WORD_SIZE > darr->available)
|
||||||
// TODO: Error (darr has no space left)
|
// TODO: Error (darr has no space left)
|
||||||
return DWORD(0);
|
return DWORD(0);
|
||||||
word w = 0;
|
word w = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user