485 lines
12 KiB
Diff
485 lines
12 KiB
Diff
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;
|
|
|