From c5b89fef2e1d329522853e6a10c1b00b5d47d6f6 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Sat, 17 Jul 2021 17:18:12 -0700 Subject: [PATCH] glfw: fix Monitor.getUserPointer alignment Signed-off-by: Stephen Gutekanst --- glfw/src/Monitor.zig | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/glfw/src/Monitor.zig b/glfw/src/Monitor.zig index 49332881..be3c79b8 100644 --- a/glfw/src/Monitor.zig +++ b/glfw/src/Monitor.zig @@ -180,7 +180,7 @@ pub inline fn getUserPointer(self: Monitor, comptime T: type) Error!?*T { const ptr = c.glfwGetMonitorUserPointer(self.handle); try getError(); if (ptr == null) return null; - return @ptrCast(*T, @alignCast(@alignOf(*T), ptr.?)); + return @ptrCast(*T, @alignCast(@alignOf(T), ptr.?)); } /// Returns the currently connected monitors. @@ -256,7 +256,7 @@ pub inline fn setCallback(comptime Data: type, data: *Data, f: ?*const fn (monit fn callbackC(monitor: ?*c.GLFWmonitor, event: c_int) callconv(.C) void { const callback = @intToPtr(NewCallback, callback_fn_ptr.?); callback.*( - Monitor{.handle = monitor.? }, + Monitor{ .handle = monitor.? }, @intCast(usize, event), @intToPtr(*Data, callback_data_ptr.?), ); @@ -343,22 +343,21 @@ test "getName" { } } -// TODO(slimsag): panic: incorrect alignment. -// test "userPointer" { -// const glfw = @import("main.zig"); -// try glfw.init(); -// defer glfw.terminate(); +test "userPointer" { + const glfw = @import("main.zig"); + try glfw.init(); + defer glfw.terminate(); -// const monitor = try getPrimary(); -// if (monitor) |m| { -// var p = try m.getUserPointer(u32); -// try testing.expect(p == null); -// var x: u32 = 5; -// try m.setUserPointer(u32, &x); -// p = try m.getUserPointer(u32); -// try testing.expectEqual(p.?.*, 5); -// } -// } + const monitor = try getPrimary(); + if (monitor) |m| { + var p = try m.getUserPointer(u32); + try testing.expect(p == null); + var x: u32 = 5; + try m.setUserPointer(u32, &x); + p = try m.getUserPointer(u32); + try testing.expectEqual(p.?.*, 5); + } +} test "setCallback" { const glfw = @import("main.zig");