[hackers] [PATCH][dwm] getstate: fix access type and remove redundant cast

From: NRK <nrk_AT_disroot.org>
Date: Sun, 15 Feb 2026 22:59:13 +0000

WM_STATE is defined to be format == 32 which xlib returns as
`long` and so accessing it as `unsigned char` is incorrect.

and also &p is already an `unsigned char **` and so the cast was
completely redundant.

given the redundant cast, i assume `p` was `long *` at some time
but was changed to `unsigned char *` later, but the pointer
access (and the cast) wasn't updated.

also add a `format == 32` check as safety measure before
accessing, just in case.
---
 dwm.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/dwm.c b/dwm.c
index fc4232e..a5e1ce9 100644
--- a/dwm.c
+++ b/dwm.c
_AT_@ -897,10 +897,10 @@ getstate(Window w)
 	Atom real;
 
 	if (XGetWindowProperty(dpy, w, wmatom[WMState], 0L, 2L, False, wmatom[WMState],
-		&real, &format, &n, &extra, (unsigned char **)&p) != Success)
+		&real, &format, &n, &extra, &p) != Success)
 		return -1;
-	if (n != 0)
-		result = *p;
+	if (n != 0 && format == 32)
+		result = *(long *)p;
 	XFree(p);
 	return result;
 }
-- 
2.52.0
Received on Sun Feb 15 2026 - 23:59:13 CET

This archive was generated by hypermail 2.3.0 : Mon Feb 16 2026 - 00:00:57 CET