diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2023-04-17 12:02:57 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-17 12:02:57 +0200 |
| commit | 1fb0b5a04429f06d75e22223765fa8723318489e (patch) | |
| tree | 20cc14e5e2d44827497c0afbbe15d9344852ac16 /lib/std/dynamic_library.zig | |
| parent | 72dcad6f020363237bdcd05b3f26f7b67fa9f162 (diff) | |
| parent | 956caf6eba6d5082f646dff501db0008fb523a1b (diff) | |
| download | zig-1fb0b5a04429f06d75e22223765fa8723318489e.tar.gz zig-1fb0b5a04429f06d75e22223765fa8723318489e.zip | |
Merge pull request #15308 from kcbanner/dynlib_lookup_alignment
DynLib.lookup: cast the pointer to the correct alignment
Diffstat (limited to 'lib/std/dynamic_library.zig')
| -rw-r--r-- | lib/std/dynamic_library.zig | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/std/dynamic_library.zig b/lib/std/dynamic_library.zig index 2ab798dcd7..099ba63204 100644 --- a/lib/std/dynamic_library.zig +++ b/lib/std/dynamic_library.zig @@ -348,7 +348,7 @@ pub const WindowsDynLib = struct { pub fn lookup(self: *WindowsDynLib, comptime T: type, name: [:0]const u8) ?T { if (windows.kernel32.GetProcAddress(self.dll, name.ptr)) |addr| { - return @ptrCast(T, addr); + return @ptrCast(T, @alignCast(@alignOf(@typeInfo(T).Pointer.child), addr)); } else { return null; } @@ -382,7 +382,7 @@ pub const DlDynlib = struct { // dlsym (and other dl-functions) secretly take shadow parameter - return address on stack // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66826 if (@call(.never_tail, system.dlsym, .{ self.handle, name.ptr })) |symbol| { - return @ptrCast(T, symbol); + return @ptrCast(T, @alignCast(@alignOf(@typeInfo(T).Pointer.child), symbol)); } else { return null; } |
