From c7f2a189c48bd4c9eb87958fff66b52e0fdcb7ce Mon Sep 17 00:00:00 2001 From: "Carlos R. Mafra" Date: Tue, 15 Sep 2009 12:52:14 +0200 Subject: [PATCH] Fix the call to XChangeProperty() in 64-bit mode The man page of XChangeProperty() says: "If the specified format is 32, the property data must be a long array." And as we call it with format 32, the type of 'data' must be 'long'. It happens to work nowadays in 32-bit architectures because sizeof(CARD32) = sizeof(long), but that is no longer true in 64-bit mode. This patch was downloaded from www.openbsd.org/cgi-bin/cvsweb/ports/x11/windowmaker/patches/patch-WINGs_wwindow_c and I thank Alexey I. Frolov and Vladimir Nadvornik for helping me to understand it on a wmaker-dev thread. --- WINGs/wwindow.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/WINGs/wwindow.c b/WINGs/wwindow.c index fd364d54..565b3924 100644 --- a/WINGs/wwindow.c +++ b/WINGs/wwindow.c @@ -216,14 +216,14 @@ static void setMiniwindowTitle(WMWindow * win, const char *title) static void setMiniwindow(WMWindow *win, RImage *image) { WMScreen *scr = win->view->screen; - CARD32 *data; + long *data; int x, y; int o; if (!image) return; - data = wmalloc((image->width * image->height + 2) * sizeof(CARD32)); + data = wmalloc((image->width * image->height + 2) * sizeof(long)); o = 0; data[o++] = image->width; @@ -231,7 +231,7 @@ static void setMiniwindow(WMWindow *win, RImage *image) for (y = 0; y < image->height; y++) { for (x = 0; x < image->width; x++) { - CARD32 pixel; + long pixel; int offs = (x + y * image->width); if (image->format == RRGBFormat)