diff options
author | Ernesto Lanchares <elancha98@proton.me> | 2025-04-04 18:34:58 +0200 |
---|---|---|
committer | Ernesto Lanchares <elancha98@proton.me> | 2025-04-04 18:34:58 +0200 |
commit | 25e51f9aead0d1de6d6a9a9660d9363ef145316e (patch) | |
tree | 7d882523495f255792e661b8a68f9903c6bee2c1 /src/main.zig | |
parent | 28420f53b06c7be0090ebbd4f242b11f976d6f64 (diff) |
Modified how exports work and fixed memory leaks.
Now exports are already defined by the mods api
(something like preinit, init, preframe,
postframe, deinit should be enough functions). At
the moment we only support preinit function.
Diffstat (limited to 'src/main.zig')
-rw-r--r-- | src/main.zig | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/main.zig b/src/main.zig index dffaa4d..72c2d91 100644 --- a/src/main.zig +++ b/src/main.zig @@ -21,20 +21,21 @@ pub fn main() !void { const file = try std.fs.cwd().openFile("assets/core.wasm", .{}); const all = try file.readToEndAlloc(allocator, 1_000_000); // 1 MB - var parser = mods.Parser{ - .bytes = all, - .byte_idx = 0, - .allocator = allocator, - }; - const module = parser.parseModule() catch |err| { + defer allocator.free(all); + var parser = try mods.Parser.init(allocator, all); + defer parser.deinit(); + parser.parseModule() catch |err| { std.debug.print("[ERROR]: error at byte {x}(0x{x})\n", .{ parser.byte_idx, parser.bytes[parser.byte_idx] }); return err; }; + const module = parser.module(); + // defer module.deinit(allocator); + var runtime = try mods.Runtime.init(allocator, module, &global_runtime); defer runtime.deinit(allocator); var parameters = [_]mods.VM.Value{.{ .i32 = 17 }}; - try runtime.callExternal(allocator, "preinit", ¶meters); + try runtime.callExternal(allocator, .preinit, ¶meters); const result = runtime.stack.pop().?; std.debug.print("Result of preinit: {any}\n", .{result}); var w = try Renderer.Window.create(800, 600, "sideros"); |