From: Brad Jorsch Date: Fri, 9 Apr 2010 19:49:06 +0000 (-0400) Subject: Fix loading saved states on 64-bit systems X-Git-Tag: wmaker-0.95.0-crm~215 X-Git-Url: https://repo.or.cz/w/wmaker-crm.git/commitdiff_plain/37829a7c60ca09eb47d4d82b00070f6f6c0fb277 Fix loading saved states on 64-bit systems One misuse of CARD32 was missed back when someone fixed the 64-bit issues (background: X has 8-bit, 16-bit, and "32-bit stored in a long" data formats; on a 64-bit system, long is 64 bits). This was causing minimized windows to be restored as shaded, and possibly occasional crashes, when wmaker was restarted. Also, throw in a safety check that 10 items really were returned before trying to access them. --- diff --git a/src/window.c b/src/window.c index 85187393..8863275d 100644 --- a/src/window.c +++ b/src/window.c @@ -2338,12 +2338,12 @@ static int getSavedState(Window window, WSavedState ** state) int fmt_ret; unsigned long nitems_ret; unsigned long bytes_after_ret; - CARD32 *data; + long *data; if (XGetWindowProperty(dpy, window, _XA_WINDOWMAKER_STATE, 0, 10, True, _XA_WINDOWMAKER_STATE, &type_ret, &fmt_ret, &nitems_ret, &bytes_after_ret, - (unsigned char **)&data) != Success || !data) + (unsigned char **)&data) != Success || !data || nitems_ret < 10) return 0; *state = wmalloc(sizeof(WSavedState));