JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
plug memory leak in get_atom_name
[spectrwm.git] / spectrwm.c
index b36aee1..a4cad40 100644 (file)
@@ -841,7 +841,7 @@ teardown_ewmh(void)
                pc = xcb_get_property(conn, 0, screens[i].root, sup_check,
                    XCB_ATOM_WINDOW, 0, 1);
                pr = xcb_get_property_reply(conn, pc, NULL);
-               if (pr->format == sup_check) {
+               if (pr && pr->format == sup_check) {
                        id = *((xcb_window_t *)xcb_get_property_value(pr));
 
                        xcb_destroy_window(conn, id);
@@ -6443,7 +6443,7 @@ get_ws_idx(xcb_window_t id)
                xcb_get_property(conn, 0, id, a_swm_ws,
                    XCB_ATOM_STRING, 0, SWM_PROPLEN),
                NULL);
-       if (gpr->type) {
+       if (gpr && gpr->type) {
                proplen = xcb_get_property_value_length(gpr);
                if (proplen > 0) {
                        prop = malloc(proplen + 1);
@@ -6464,6 +6464,7 @@ get_ws_idx(xcb_window_t id)
                        DNPRINTF(SWM_D_PROP, "get_ws_idx: window: #%s: %s",
                            errstr, prop);
                }
+               free(prop);
        }
 
        return ws_idx;
@@ -7115,7 +7116,7 @@ maprequest(xcb_map_request_event_t *e)
 char *
 get_atom_name(xcb_atom_t atom)
 {
-       char                            *name;
+       char                            *name = NULL;
        size_t                          len;
        xcb_get_atom_name_reply_t       *r;
 
@@ -7129,14 +7130,12 @@ get_atom_name(xcb_atom_t atom)
                        if (name) {
                                memcpy(name, xcb_get_atom_name_name(r), len);
                                name[len] = '\0';
-
-                               return name;
                        }
                }
                free(r);
        }
 
-       return NULL;
+       return (name);
 }
 #endif