From 225e060c6e06ded079ce97780c6fe7dc5eef4c50 Mon Sep 17 00:00:00 2001 From: Ronald Chen Date: Thu, 2 May 2024 18:52:01 -0700 Subject: [PATCH] std.DynLib: compile error if attempt to lookup a function pointer with an unspecified callconv fixes #19841 --- lib/std/dynamic_library.zig | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/std/dynamic_library.zig b/lib/std/dynamic_library.zig index 7fd231aba7fb..2af5d8f61c49 100644 --- a/lib/std/dynamic_library.zig +++ b/lib/std/dynamic_library.zig @@ -43,6 +43,19 @@ pub const DynLib = struct { } pub fn lookup(self: *DynLib, comptime T: type, name: [:0]const u8) ?T { + switch (@typeInfo(T)) { + .Pointer => |pointer| { + switch (@typeInfo(pointer.child)) { + .Fn => |function| { + if (function.calling_convention == .Unspecified) { + @compileError("callconv cannot be .Unspecified for: " ++ @typeName(T)); + } + }, + else => {}, + } + }, + else => @compileError("expected a pointer type"), + } return self.inner.lookup(T, name); } };