stage0 修复部分问题
This commit is contained in:
1 parent
5073c2b3ea
commit
a1e684f6d4
3 files changed
+58
-44
No files matched your search
+8
-2
@@ -328,6 +328,9 @@ static int spl_type_size(spl_vm_kind_t t) {
|
||||
_r = _da OP _db; \
|
||||
break; \
|
||||
} \
|
||||
case SPL_BOOL: \
|
||||
_r = (uint8_t)_a OP(uint8_t) _b; \
|
||||
break; \
|
||||
default: \
|
||||
_r = 0; \
|
||||
break; \
|
||||
@@ -1018,9 +1021,12 @@ int spl_vm_run_once(spl_vm_t *vm) {
|
||||
|
||||
case SPL_GADDR: {
|
||||
spl_vm_val_t _idx = ins->imm;
|
||||
if (_idx >= vec_size(prog->gdata))
|
||||
if (_idx == 0 || _idx >= vec_size(prog->gdata))
|
||||
VM_ERROR("GADDR: global data index out of range");
|
||||
PUSH((spl_vm_val_t)(uintptr_t)vec_at(prog->gdata, _idx).data);
|
||||
spl_vm_gdata_t *gd = &vec_at(prog->gdata, _idx);
|
||||
if (!gd->data)
|
||||
VM_ERROR("GADDR: null gdata entry");
|
||||
PUSH((spl_vm_val_t)(uintptr_t)gd->data);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user