diff options
| author | NRK <nrk@disroot.org> | 2026-02-15 22:59:13 +0000 |
|---|---|---|
| committer | Hiltjo Posthuma <hiltjo@codemadness.org> | 2026-02-20 15:31:28 +0100 |
| commit | 5c9f30300bec2f7eec9ba61d0c11df999e17f860 (patch) | |
| tree | 820a06457800ff5ae5d20ff8ffe8124dc3e931ff | |
| parent | 397d618f1cfbed398ef05d0c9d1e5dbcdb8144e7 (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.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -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; } |
