From 3af4dc575a1cd9cbdcc98b19ee5fbf269b068880 Mon Sep 17 00:00:00 2001 From: Luna Date: Sat, 1 Jun 2024 16:53:01 -0300 Subject: [PATCH] fix command ptr alignment --- src/lang.zig | 13 ++++++++++++- src/runner.zig | 10 +++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/lang.zig b/src/lang.zig index 72b9e2c..31e5a73 100644 --- a/src/lang.zig +++ b/src/lang.zig @@ -143,7 +143,18 @@ pub const Command = struct { if (base.tag != T.base_tag) return null; - const ptr: *const T = @alignCast(@fieldParentPtr("base", base)); + //const baseInt = @intFromPtr(base); + + //log.debug("casting from {d}", .{baseInt}); + //log.debug("aligns from 8? {d}", .{baseInt % 8}); + //log.debug("align T: {d} {s}", .{ @alignOf(*T), @typeName(T) }); + //log.debug("align base: {d} {s}", .{ @alignOf(*const @This()), @typeName(@This()) }); + const base_aligned: *const @This() = @alignCast(base); + + const parented = @as(*const T, @alignCast(@fieldParentPtr("base", base_aligned))); + + const ptr: *const T = @alignCast(parented); + //log.debug("align: {d}\n", .{@alignOf(@TypeOf(ptr))}); return ptr; } diff --git a/src/runner.zig b/src/runner.zig index 8cc578c..85b8d79 100644 --- a/src/runner.zig +++ b/src/runner.zig @@ -194,7 +194,7 @@ pub const Runner = struct { try image.saveTo(out_path); } - fn runQSCmd(self: *Runner, cmd: lang.Command) !void { + fn runQSCmd(self: *Runner, cmd: *lang.Command) !void { const runqs = cmd.cast(lang.Command.RunQS).?; var image = try self.getImage(); const out_path = try self.makeGlitchedPath(); @@ -211,7 +211,7 @@ pub const Runner = struct { _ = try proc.spawnAndWait(); } - fn rotateCmd(self: *Runner, cmd: lang.Command) !void { + fn rotateCmd(self: *Runner, cmd: *lang.Command) !void { const rotate_cmd = cmd.cast(lang.Command.Rotate).?; const image = try self.getImage(); @@ -255,7 +255,7 @@ pub const Runner = struct { fn runSingleCommand( self: *@This(), - cmd: lang.Command, + cmd: *lang.Command, comptime tag: lang.Command.Tag, ) !void { const typ = lang.Command.tagToType(tag); @@ -267,7 +267,7 @@ pub const Runner = struct { } } - fn runCommand(self: *@This(), cmd: lang.Command) !void { + fn runCommand(self: *@This(), cmd: *lang.Command) !void { switch (cmd.tag) { .noop => {}, .load => { @@ -322,7 +322,7 @@ pub const Runner = struct { _ = debug_flag; for (cmds.list.items) |cmd| { cmd.print(); - try self.runCommand(cmd.*); + try self.runCommand(cmd); } } };