diff --git a/plugins/blur.c b/plugins/blur.c index d7da5da..60a1582 100644 --- a/plugins/blur.c +++ b/plugins/blur.c @@ -716,7 +716,7 @@ blurWindowUpdate (CompWindow *w, XA_INTEGER, &actual, &format, &n, &left, &propData); - if (result == Success && n && propData) + if (result == Success && propData) { bw->propSet[state] = TRUE; diff --git a/plugins/decoration.c b/plugins/decoration.c index 003685f..3ce3615 100644 --- a/plugins/decoration.c +++ b/plugins/decoration.c @@ -413,9 +413,15 @@ decorCreateDecoration (CompScreen *screen, XA_INTEGER, &actual, &format, &n, &nleft, &data); - if (result != Success || !n || !data) + if (result != Success || !data) return NULL; + if (!n) + { + XFree (data); + return NULL; + } + prop = (long *) data; if (decor_property_get_version (prop) != decor_version ()) @@ -878,19 +884,23 @@ decorCheckForDmOnScreen (CompScreen *s, XA_WINDOW, &actual, &format, &n, &left, &data); - if (result == Success && n && data) + if (result == Success && data) { - XWindowAttributes attr; + if (n) + { + XWindowAttributes attr; - memcpy (&dmWin, data, sizeof (Window)); - XFree (data); + memcpy (&dmWin, data, sizeof (Window)); - compCheckForError (d->display); + compCheckForError (d->display); - XGetWindowAttributes (d->display, dmWin, &attr); + XGetWindowAttributes (d->display, dmWin, &attr); - if (compCheckForError (d->display)) - dmWin = None; + if (compCheckForError (d->display)) + dmWin = None; + } + + XFree (data); } if (dmWin != ds->dmWin) diff --git a/plugins/minimize.c b/plugins/minimize.c index eb82370..1f8a614 100644 --- a/plugins/minimize.c +++ b/plugins/minimize.c @@ -185,23 +185,22 @@ minGetWindowState (CompWindow *w) int result, format; unsigned long n, left; unsigned char *data; + int retval = WithdrawnState; result = XGetWindowProperty (w->screen->display->display, w->id, w->screen->display->wmStateAtom, 0L, 1L, FALSE, w->screen->display->wmStateAtom, &actual, &format, &n, &left, &data); - if (result == Success && n && data) + if (result == Success && data) { - int state; + if (n) + memcpy (&retval, data, sizeof (int)); - memcpy (&state, data, sizeof (int)); XFree ((void *) data); - - return state; } - return WithdrawnState; + return retval; } static int diff --git a/plugins/switcher.c b/plugins/switcher.c index 13be8ad..b2d9777 100644 --- a/plugins/switcher.c +++ b/plugins/switcher.c @@ -1056,7 +1056,7 @@ updateForegroundColor (CompScreen *s) XA_INTEGER, &actual, &format, &n, &left, &propData); - if (result == Success && n && propData) + if (result == Success && propData) { if (n == 3 || n == 4) { diff --git a/plugins/video.c b/plugins/video.c index b95eb6b..505a974 100644 --- a/plugins/video.c +++ b/plugins/video.c @@ -805,7 +805,7 @@ videoWindowUpdate (CompWindow *w) XA_INTEGER, &actual, &format, &n, &left, &propData); - if (result == Success && n && propData) + if (result == Success && propData) { if (n == 13) { diff --git a/src/display.c b/src/display.c index 23b0ba1..dd4676e 100644 --- a/src/display.c +++ b/src/display.c @@ -2767,6 +2767,9 @@ handleSelectionRequest (CompDisplay *display, event->xselectionrequest.property, display->atomPairAtom, 32, PropModeReplace, data, num); + + if (data) + XFree (data); } } else diff --git a/src/screen.c b/src/screen.c index 33cb3cc..df7bd18 100644 --- a/src/screen.c +++ b/src/screen.c @@ -977,7 +977,7 @@ updateScreenBackground (CompScreen *screen, &actualType, &actualFormat, &nItems, &bytesAfter, &prop); - if (status == Success && nItems && prop) + if (status == Success && prop) { if (actualType == pixmapAtom && actualFormat == 32 && @@ -1220,13 +1220,16 @@ getDesktopHints (CompScreen *s) XA_CARDINAL, &actual, &format, &n, &left, &propData); - if (result == Success && n && propData) + if (result == Success && propData) { - memcpy (data, propData, sizeof (unsigned long)); - XFree (propData); + if (n) + { + memcpy (data, propData, sizeof (unsigned long)); - if (data[0] > 0 && data[0] < 0xffffffff) - s->nDesktop = data[0]; + if (data[0] > 0 && data[0] < 0xffffffff) + s->nDesktop = data[0]; + } + XFree (propData); } result = XGetWindowProperty (s->display->display, s->root, @@ -1234,13 +1237,17 @@ getDesktopHints (CompScreen *s) XA_CARDINAL, &actual, &format, &n, &left, &propData); - if (result == Success && n && propData) + if (result == Success && propData) { - memcpy (data, propData, sizeof (unsigned long)); - XFree (propData); + if (n) + { + memcpy (data, propData, sizeof (unsigned long)); - if (data[0] < s->nDesktop) - s->currentDesktop = data[0]; + if (data[0] < s->nDesktop) + s->currentDesktop = data[0]; + } + + XFree (propData); } } @@ -1249,7 +1256,7 @@ getDesktopHints (CompScreen *s) FALSE, XA_CARDINAL, &actual, &format, &n, &left, &propData); - if (result == Success && n && propData) + if (result == Success && propData) { if (n == 2) { @@ -1270,13 +1277,16 @@ getDesktopHints (CompScreen *s) XA_CARDINAL, &actual, &format, &n, &left, &propData); - if (result == Success && n && propData) + if (result == Success && propData) { - memcpy (data, propData, sizeof (unsigned long)); - XFree (propData); + if (n) + { + memcpy (data, propData, sizeof (unsigned long)); - if (data[0]) - (*s->enterShowDesktopMode) (s); + if (data[0]) + (*s->enterShowDesktopMode) (s); + } + XFree (propData); } data[0] = s->currentDesktop; @@ -3406,9 +3416,10 @@ getActiveWindow (CompDisplay *display, XA_WINDOW, &actual, &format, &n, &left, &data); - if (result == Success && n && data) + if (result == Success && data) { - memcpy (&w, data, sizeof (Window)); + if (n) + memcpy (&w, data, sizeof (Window)); XFree (data); } diff --git a/src/window.c b/src/window.c index 881bbd5..dfa8bde 100644 --- a/src/window.c +++ b/src/window.c @@ -452,11 +452,12 @@ getClientLeader (CompWindow *w) 0L, 1L, False, XA_WINDOW, &actual, &format, &n, &left, &data); - if (result == Success && n && data) + if (result == Success && data) { - Window win; + Window win = None; - memcpy (&win, data, sizeof (Window)); + if (n) + memcpy (&win, data, sizeof (Window)); XFree ((void *) data); if (win) @@ -481,11 +482,12 @@ getStartupId (CompWindow *w) &actual, &format, &n, &left, &data); - if (result == Success && n && data) + if (result == Success && data) { - char *id; + char *id = NULL; - id = strdup ((char *) data); + if (n) + id = strdup ((char *) data); XFree ((void *) data); return id; @@ -509,9 +511,10 @@ getWmState (CompDisplay *display, display->wmStateAtom, &actual, &format, &n, &left, &data); - if (result == Success && n && data) + if (result == Success && data) { - memcpy (&state, data, sizeof (unsigned long)); + if (n) + memcpy (&state, data, sizeof (unsigned long)); XFree ((void *) data); } @@ -908,7 +911,7 @@ unsigned int getWindowType (CompDisplay *display, Window id) { - Atom actual; + Atom actual, a = None; int result, format; unsigned long n, left; unsigned char *data; @@ -917,13 +920,16 @@ getWindowType (CompDisplay *display, 0L, 1L, FALSE, XA_ATOM, &actual, &format, &n, &left, &data); - if (result == Success && n && data) + if (result == Success && data) { - Atom a; + if (n) + memcpy (&a, data, sizeof (Atom)); - memcpy (&a, data, sizeof (Atom)); XFree ((void *) data); + } + if (a) + { if (a == display->winTypeNormalAtom) return CompWindowTypeNormalMask; else if (a == display->winTypeMenuAtom) @@ -1004,7 +1010,7 @@ getMwmHints (CompDisplay *display, 0L, 20L, FALSE, display->mwmHintsAtom, &actual, &format, &n, &left, &data); - if (result == Success && n && data) + if (result == Success && data) { MwmHints *mwmHints = (MwmHints *) data; @@ -1061,23 +1067,26 @@ getWindowProp (CompDisplay *display, int result, format; unsigned long n, left; unsigned char *data; + unsigned int retval = defaultValue; result = XGetWindowProperty (display->display, id, property, 0L, 1L, FALSE, XA_CARDINAL, &actual, &format, &n, &left, &data); - if (result == Success && n && data) + if (result == Success && data) { - unsigned long value; + if (n) + { + unsigned long value; - memcpy (&value, data, sizeof (unsigned long)); + memcpy (&value, data, sizeof (unsigned long)); + retval = (unsigned int) value; + } XFree (data); - - return (unsigned int) value; } - return defaultValue; + return retval; } void @@ -1103,25 +1112,27 @@ readWindowProp32 (CompDisplay *display, int result, format; unsigned long n, left; unsigned char *data; + Bool retval = FALSE; result = XGetWindowProperty (display->display, id, property, 0L, 1L, FALSE, XA_CARDINAL, &actual, &format, &n, &left, &data); - if (result == Success && n && data) + if (result == Success && data) { - CARD32 value; + if (n) + { + CARD32 value; + memcpy (&value, data, sizeof (CARD32)); - memcpy (&value, data, sizeof (CARD32)); + retval = TRUE; + *returnValue = value >> 16; + } XFree (data); - - *returnValue = value >> 16; - - return TRUE; } - return FALSE; + return retval; } unsigned short @@ -1696,7 +1707,7 @@ updateWindowStruts (CompWindow *w) 0L, 12L, FALSE, XA_CARDINAL, &actual, &format, &n, &left, &data); - if (result == Success && n && data) + if (result == Success && data) { unsigned long *struts = (unsigned long *) data; @@ -1742,7 +1753,7 @@ updateWindowStruts (CompWindow *w) 0L, 4L, FALSE, XA_CARDINAL, &actual, &format, &n, &left, &data); - if (result == Success && n && data) + if (result == Success && data) { unsigned long *struts = (unsigned long *) data; @@ -2673,6 +2684,10 @@ initializeSyncCounter (CompWindow *w) XSyncDestroyAlarm (w->screen->display->display, w->syncAlarm); w->syncAlarm = None; } + else if (result == Success && data) + { + XFree (data); + } return FALSE; } @@ -4657,24 +4672,28 @@ getWindowUserTime (CompWindow *w, int result, format; unsigned long n, left; unsigned char *data; + Bool retval = FALSE; result = XGetWindowProperty (w->screen->display->display, w->id, w->screen->display->wmUserTimeAtom, 0L, 1L, False, XA_CARDINAL, &actual, &format, &n, &left, &data); - if (result == Success && n && data) + if (result == Success && data) { - CARD32 value; + if (n) + { + CARD32 value; - memcpy (&value, data, sizeof (CARD32)); - XFree ((void *) data); + memcpy (&value, data, sizeof (CARD32)); + retval = TRUE; + *time = (Time) value; + } - *time = (Time) value; - return TRUE; + XFree ((void *) data); } - return FALSE; + return retval; } void @@ -4937,7 +4956,7 @@ getWindowIcon (CompWindow *w, &actual, &format, &n, &left, &data); - if (result == Success && n && data) + if (result == Success && data) { CompIcon **pIcon; CARD32 *p; diff --git a/gtk/window-decorator/gtk-window-decorator.c b/gtk/window-decorator/gtk-window-decorator.c index d018a42..3da0d2e 100644 --- a/gtk/window-decorator/gtk-window-decorator.c +++ b/gtk/window-decorator/gtk-window-decorator.c @@ -2731,7 +2731,7 @@ get_mwm_prop (Window xwindow) if (err != Success || result != Success) return decor; - if (n && data) + if (data) { MwmHints *mwm_hints = (MwmHints *) data;