[PATCH] w32: Fix clang compiler error with function pointer

Jacob Bachmeyer jcb62281 at gmail.com
Wed May 31 07:01:37 CEST 2023

Biswapriyo Nath wrote:
>> Is "allow_set_forground" intended or a typo for "allow_set_foreground"?
> Yes, I didn't notice it.
>> Also, this looks like a clang bug:  both version of the code should
>> declare a function pointer of the same type.
> I do not think so. gcc also shows a compiler warning with that line as
> following.
> ../../src/gpgme-w32spawn.c:253:20: warning: assignment to 'BOOL
> (*)(DWORD)' {aka 'int (*)(long unsigned int)'} from incompatible
> pointer type 'FARPROC' {aka 'long long
> int (*)()'} [-Wincompatible-pointer-types]
>   253 |               func = GetProcAddress (handle,
> "AllowSetForegroundWindow");
>       |                    ^
> clang only treats it as a compiler error by default.

Oh, right.  Your patch actually has two changes.  You should also be 
able to also cast the pointer to "(BOOL (*)(DWORD))" without naming the 
type.  E.g.

func = (BOOL (*)(DWORD)) GetProcAddress (handle, "AllowSetForegroundWindow");

... but I do not have a Windows box to test that on.

-- Jacob

More information about the Gnupg-devel mailing list