Browse Source

change loop return value, check errors

master
Martin Dørum 3 years ago
parent
commit
73b77185b1
1 changed files with 6 additions and 2 deletions
  1. 6
    2
      lib/vm/builtins.c

+ 6
- 2
lib/vm/builtins.c View File



static l2_word loop_callback(struct l2_vm *vm, l2_word retval, l2_word cont) { static l2_word loop_callback(struct l2_vm *vm, l2_word retval, l2_word cont) {
struct l2_vm_value *val = &vm->values[retval]; struct l2_vm_value *val = &vm->values[retval];
if (l2_value_get_type(val) == L2_VAL_TYPE_ATOM && val->atom == vm->values[vm->kstop].atom) {
if (l2_value_get_type(val) == L2_VAL_TYPE_ERROR) {
return retval;
} else if (
l2_value_get_type(val) == L2_VAL_TYPE_ATOM &&
val->atom == vm->values[vm->kstop].atom) {
return vm->knone; return vm->knone;
} else { } else {
return cont; return cont;
cont->extra.cont_call = ctx->body; cont->extra.cont_call = ctx->body;
return cont_id; return cont_id;
} else { } else {
return retval;
return vm->knone;
} }
} else { } else {
if (l2_value_get_type(ret) == L2_VAL_TYPE_ERROR) { if (l2_value_get_type(ret) == L2_VAL_TYPE_ERROR) {

Loading…
Cancel
Save