feat+fix: add extern fns reading; fix VM reading issues

This commit is contained in:
samsonium
2026-11-06 13:32:41 +03:00
parent 376e7bd1b4
commit 317b846108
9 changed files with 249 additions and 9 deletions
+23 -1
View File
@@ -8,7 +8,7 @@
#include <vm/fzl_vm_reader.h>
#include <vm/internals/reader.h>
char reader_err[256];
char reader_err[512];
fzl_vm_reader_t *fzl_vm_mkreader(char *filepath)
{
@@ -138,7 +138,12 @@ void fzl_vm_freereader(fzl_vm_reader_t *reader)
}
if (reader->extern_libs)
{
for (uint16_t i = 0; i < reader->extern_libs_count; i++)
free(reader->extern_libs[i]);
free(reader->extern_libs);
}
if (reader->extern_types)
{
@@ -156,6 +161,8 @@ void fzl_vm_freereader(fzl_vm_reader_t *reader)
if (fields[j].name)
free(fields[j].name);
}
free(fields);
}
}
@@ -163,7 +170,22 @@ void fzl_vm_freereader(fzl_vm_reader_t *reader)
}
if (reader->extern_fns)
{
for (uint16_t i = 0; i < reader->extern_fns_count; i++)
{
fzl_extern_fn_t *fn = &reader->extern_fns[i];
if (fn->used_name)
free(fn->used_name);
if (fn->symbol_name)
free(fn->symbol_name);
if (fn->args_count > 0)
free(fn->args);
}
free(reader->extern_fns);
}
if (reader->ops)
free(reader->ops);