authorgravatar for kcbanner@gmail.comCasey Banner <kcbanner@gmail.com> 2023-04-15 23:23:29-04:00
committergravatar for kcbanner@gmail.comCasey Banner <kcbanner@gmail.com> 2023-04-15 23:23:29-04:00
logf0482c95d2c0ed05b6f8ee2826e4fc11982410b4
tree6141151116ffa381e1556c9c3a26900c58870642
parent23ac4dd87b740012ba33e8ab2ea6fb25c04b6268

DynLib.lookup: cast the pointer to the correct alignment


1 files changed, 2 insertions(+), 2 deletions(-)

lib/std/dynamic_library.zig+2-2
...@@ -348,7 +348,7 @@ pub const WindowsDynLib = struct {...@@ -348,7 +348,7 @@ pub const WindowsDynLib = struct {
348348
349 pub fn lookup(self: *WindowsDynLib, comptime T: type, name: [:0]const u8) ?T {349 pub fn lookup(self: *WindowsDynLib, comptime T: type, name: [:0]const u8) ?T {
350 if (windows.kernel32.GetProcAddress(self.dll, name.ptr)) |addr| {350 if (windows.kernel32.GetProcAddress(self.dll, name.ptr)) |addr| {
351 return @ptrCast(T, addr);351 return @ptrCast(T, @alignCast(@alignOf(@typeInfo(T).Pointer.child), addr));
352 } else {352 } else {
353 return null;353 return null;
354 }354 }
...@@ -382,7 +382,7 @@ pub const DlDynlib = struct {...@@ -382,7 +382,7 @@ pub const DlDynlib = struct {
382 // dlsym (and other dl-functions) secretly take shadow parameter - return address on stack382 // dlsym (and other dl-functions) secretly take shadow parameter - return address on stack
383 // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66826383 // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66826
384 if (@call(.never_tail, system.dlsym, .{ self.handle, name.ptr })) |symbol| {384 if (@call(.never_tail, system.dlsym, .{ self.handle, name.ptr })) |symbol| {
385 return @ptrCast(T, symbol);385 return @ptrCast(T, @alignCast(@alignOf(@typeInfo(T).Pointer.child), symbol));
386 } else {386 } else {
387 return null;387 return null;
388 }388 }