🐛 🐛 void function and compiler segfault.
parent
76e0cdbeef
commit
6420e283a1
|
@ -76,6 +76,7 @@ int compiler_compile(struct compiler* self,
|
|||
struct node* ident = idents.data[j];
|
||||
|
||||
struct type* ty = malloc(sizeof(struct type));
|
||||
type_init(ty, TYPE_VOID);
|
||||
compiler_get_type(self, param, ty);
|
||||
|
||||
sym_table_declare_const(&compiler.sym_table,
|
||||
|
|
10
vm/src/vm.c
10
vm/src/vm.c
|
@ -208,13 +208,19 @@ int vm_exec(struct vm* self, struct program* program)
|
|||
vec_free(&args);
|
||||
|
||||
struct value* ret_val =
|
||||
fun->program.constant_pool.data[my_frame->stack[my_frame->sp - 1]];
|
||||
(my_frame->sp > 0)
|
||||
? fun->program.constant_pool.data
|
||||
[my_frame->stack[my_frame->sp - 1]]
|
||||
: NULL;
|
||||
|
||||
struct value* new_ret = value_new_clone(ret_val);
|
||||
struct value* new_ret = ret_val ? value_new_clone(ret_val) : NULL;
|
||||
|
||||
vm_remove_frame(self);
|
||||
|
||||
if (new_ret)
|
||||
{
|
||||
vm_push(self, program_push_constant(program, new_ret));
|
||||
}
|
||||
|
||||
self->pc = ret_addr + 1;
|
||||
|
||||
|
|
Loading…
Reference in New Issue