From 97b1e368e51f2173577460c96a78f90347a4bf3b Mon Sep 17 00:00:00 2001
From: "Foad S. Farimani" <f.s.farimani@gmail.com>
Date: Wed, 17 Sep 2025 00:30:07 +0200
Subject: [PATCH] Fix HWND pointer casting errors on MinGW-w64

- Use uintptr_t for safe pointer-to-integer conversion of HWND
- Fix Data32 call to pass address of tmp variable instead of casting integer to pointer
- Resolves compilation errors with -Werror=int-to-pointer-cast on Windows cross-compilation

Fixes build errors when cross-compiling with MinGW-w64 where HWND is a pointer
type and direct casting between pointer and long of different sizes fails.
---
 src/XAppgroup.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/XAppgroup.c b/src/XAppgroup.c
index b5642f3..6248c5d 100644
--- a/src/XAppgroup.c
+++ b/src/XAppgroup.c
@@ -337,7 +337,7 @@ Bool
 XagCreateAssociation(Display* dpy, Window* window_return, void* system_window)
 {
 #ifdef WIN32
-    long tmp = *(HWND*) system_window;
+    long tmp = (long)(uintptr_t)(*(HWND*) system_window);
     XExtDisplayInfo *info = find_display (dpy);
     xXagCreateAssocReq *req;
 
@@ -350,7 +350,7 @@ XagCreateAssociation(Display* dpy, Window* window_return, void* system_window)
     *window_return = req->window = XAllocID(dpy);
     req->window_type = XagWindowTypeWin32;
     req->system_window_len = sizeof(HWND);
-    Data32 (dpy, (long*) tmp, 1L);
+    Data32 (dpy, (long*) &tmp, 1L);
     req->length++;
     UnlockDisplay(dpy);
     SyncHandle();
-- 
2.49.0.windows.1

