From 4d85ae8dbc4dbe75cef71f1280cea4ee15a1b6d7 Mon Sep 17 00:00:00 2001 From: dolio Date: Thu, 23 Sep 2004 01:56:00 +0000 Subject: [PATCH 1/1] Miscellaneous code cleanup and failed allocation checks. --- ChangeLog | 6 ++++++ xcompmgr.c | 25 +++++++++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index d93bfb3..2058dfb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-09-22 Dan Doel + + * xcompmgr.c: (run_fades), (solid_picture), (get_opacity_prop), + (determine_wintype), (circulate_win): + Miscellaneous code cleanup and checks for failed allocations. + 2004-09-21 Dan Doel * xcompmgr.c: (presum_gaussian), (make_shadow), (main): diff --git a/xcompmgr.c b/xcompmgr.c index dcb0843..01d9188 100644 --- a/xcompmgr.c +++ b/xcompmgr.c @@ -348,7 +348,7 @@ run_fades (Display *dpy) { w->opacity = f->finish*OPAQUE; dequeue_fade (dpy, f); - } + } } else { @@ -356,7 +356,7 @@ run_fades (Display *dpy) { w->opacity = f->finish*OPAQUE; dequeue_fade (dpy, f); - } + } } determine_mode (dpy, w); if (w->shadow) @@ -677,11 +677,20 @@ solid_picture (Display *dpy, Bool argb, double a, double r, double g, double b) XRenderColor c; pixmap = XCreatePixmap (dpy, root, 1, 1, argb ? 32 : 8); + if (!pixmap) + return None; + pa.repeat = True; picture = XRenderCreatePicture (dpy, pixmap, XRenderFindStandardFormat (dpy, argb ? PictStandardARGB32 : PictStandardA8), CPRepeat, &pa); + if (!picture) + { + XFreePixmap (dpy, pixmap); + return None; + } + c.alpha = a * 0xffff; c.red = r * 0xffff; c.green = g * 0xffff; @@ -1257,7 +1266,7 @@ get_opacity_prop(Display *dpy, win *w, unsigned int def) int result = XGetWindowProperty(dpy, w->id, opacityAtom, 0L, 1L, False, XA_CARDINAL, &actual, &format, &n, &left, &data); - if (result == Success && data != None) + if (result == Success && data != NULL) { unsigned int i; memcpy (&i, data, sizeof (unsigned int)); @@ -1360,7 +1369,7 @@ static Atom determine_wintype (Display *dpy, Window w) { Window root_return, parent_return; - Window *children; + Window *children = NULL; unsigned int nchildren, i; Atom type; @@ -1372,6 +1381,8 @@ determine_wintype (Display *dpy, Window w) &nchildren)) { /* XQueryTree failed. */ + if (children) + XFree ((void *)children); return winNormalAtom; } @@ -1382,6 +1393,9 @@ determine_wintype (Display *dpy, Window w) return type; } + if (children) + XFree ((void *)children); + return winNormalAtom; } @@ -1553,6 +1567,9 @@ circulate_win (Display *dpy, XCirculateEvent *ce) win *w = find_win (dpy, ce->window); Window new_above; + if (!w) + return; + if (ce->place == PlaceOnTop) new_above = list->id; else -- 1.9.1