diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-10-29 16:56:33 +0000 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-10-29 16:56:33 +0000 |
commit | c4cb45f3ad3fedb4247577cffb3e5b07f41dab02 (patch) | |
tree | 822152be03f167edbfeace548fd6dbdfae2ba247 /vm/inst.c | |
parent | 7c367f95c9a46983ed1b97e9ea892f233d592cdf (diff) | |
download | ovm-c4cb45f3ad3fedb4247577cffb3e5b07f41dab02.tar.gz ovm-c4cb45f3ad3fedb4247577cffb3e5b07f41dab02.tar.bz2 ovm-c4cb45f3ad3fedb4247577cffb3e5b07f41dab02.zip |
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.
Diffstat (limited to 'vm/inst.c')
-rw-r--r-- | vm/inst.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -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; |