static OP_CHECK(opck_deep_eq_any) {
Exp_Binary *bin = data;
bin->op = insert_symbol(env->gwion->st, "==");
+ exp_self(bin)->exp_type = ae_exp_binary;
DECL_ON(const Type, t, = check_exp(env, exp_self(bin)));
return t;
}
static OP_CHECK(opck_deep_ne_any) {
Exp_Binary *bin = data;
bin->op = insert_symbol(env->gwion->st, "!=");
- const Type t = check_exp(env, exp_self(bin));
- return !t ? env->gwion->type[et_error] : env->gwion->type[et_bool];
+ exp_self(bin)->exp_type = ae_exp_binary;
+ DECL_ON(const Type, t, = check_exp(env, exp_self(bin)));
+ return t;
}
deep_any(emit, emit, em, EMIT, CHECK_BB, eq, ==);
}
if (!base)
base = next = cpy_nonext(env, curr);
- else {
+ else if(next) { // check me (added after a fuzzing session)
next->next = cpy_nonext(env, curr);
next = next->next;
}
if (start > shred->pc) break;
if (start < shred->pc && VKEY(m, i) > shred->pc) {
const m_uint next = VKEY(m, i);
- const Instr instr = (Instr)vector_at(&code->instr, next + 1);
+ const Instr instr = (Instr)vector_at(&code->instr, next);
if (!instr->m_val2 || (Symbol)instr->m_val2 == effect)
return next + 1;
}