aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNRK <nrk@disroot.org>2026-02-15 22:59:13 +0000
committerHiltjo Posthuma <hiltjo@codemadness.org>2026-02-20 15:31:28 +0100
commit5c9f30300bec2f7eec9ba61d0c11df999e17f860 (patch)
tree820a06457800ff5ae5d20ff8ffe8124dc3e931ff
parent397d618f1cfbed398ef05d0c9d1e5dbcdb8144e7 (diff)
getstate: fix access type and remove redundant cast
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.
-rw-r--r--dwm.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/dwm.c b/dwm.c
index fc4232e..a5e1ce9 100644
--- a/dwm.c
+++ b/dwm.c
@@ -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;
}