From 81dc7c4b9eacc4f45e4bd89c50d62055b7071549 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 30 Apr 2025 14:06:44 +0300 Subject: [PATCH] Fix compilation errors in emacsclient.c with MinGW GCC 15 * lib-src/emacsclient.c (set_fg, get_wc): Declare using actual function signatures. (w32_give_focus): Cast return value of 'GetProcAddress' to correct pointer types. (Bug#78160) (cherry picked from commit 6c2aaedfcebb310e0c948d6972f90cc7d96193f9) --- lib-src/emacsclient.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index 21e8d171574..a0b1cfff392 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c @@ -1715,8 +1715,13 @@ set_socket (bool no_exit_if_error) } #ifdef HAVE_NTGUI -FARPROC set_fg; /* Pointer to AllowSetForegroundWindow. */ -FARPROC get_wc; /* Pointer to RealGetWindowClassA. */ +typedef void (* VOIDFNPTR) (void); +typedef BOOL (WINAPI *AllowSetForegroundWindow_proc) (DWORD); +/* Pointer to AllowSetForegroundWindow. */ +static AllowSetForegroundWindow_proc set_fg; +typedef UINT (WINAPI *RealGetWindowClassA_proc) (HWND, LPSTR, UINT); +/* Pointer to RealGetWindowClassA. */ +static RealGetWindowClassA_proc get_wc; void w32_set_user_model_id (void); @@ -1794,8 +1799,8 @@ w32_give_focus (void) emacsclient can allow Emacs to grab the focus by calling the function AllowSetForegroundWindow. Unfortunately, older Windows (W95, W98 and NT) lack this function, so we have to check its availability. */ - if ((set_fg = GetProcAddress (user32, "AllowSetForegroundWindow")) - && (get_wc = GetProcAddress (user32, "RealGetWindowClassA"))) + if ((set_fg = (AllowSetForegroundWindow_proc) (VOIDFNPTR) GetProcAddress (user32, "AllowSetForegroundWindow")) + && (get_wc = (RealGetWindowClassA_proc) (VOIDFNPTR) GetProcAddress (user32, "RealGetWindowClassA"))) EnumWindows (w32_find_emacs_process, (LPARAM) 0); } #endif /* HAVE_NTGUI */ -- 2.39.5