From c4cb45f3ad3fedb4247577cffb3e5b07f41dab02 Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Sun, 29 Oct 2023 16:56:33 +0000 Subject: 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. --- vm/inst.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'vm/inst.c') diff --git a/vm/inst.c b/vm/inst.c index 8394942..d553d57 100644 --- a/vm/inst.c +++ b/vm/inst.c @@ -287,13 +287,13 @@ data_t read_type_from_darr(darr_t *darr, data_type_t type) case DATA_TYPE_NIL: break; case DATA_TYPE_BYTE: - if (darr->used >= darr->available) + if (darr->used > darr->available) // TODO: Error (darr has no space left) return DBYTE(0); return DBYTE(darr->data[darr->used++]); break; 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) return DWORD(0); hword u = 0; @@ -302,7 +302,7 @@ data_t read_type_from_darr(darr_t *darr, data_type_t type) return DHWORD(u); break; 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) return DWORD(0); word w = 0; -- cgit v1.2.3-13-gbd6f