fix memory leak when swallowing windows
This commit is contained in:
parent
8d917497c2
commit
f511cc61c1
|
@ -9,6 +9,12 @@
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* Frees an i3Window and all its members.
|
||||
*
|
||||
*/
|
||||
void window_free(i3Window *win);
|
||||
|
||||
/**
|
||||
* Updates the WM_CLASS (consisting of the class and instance) for the
|
||||
* given window.
|
||||
|
|
|
@ -310,6 +310,9 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
|
|||
}
|
||||
}
|
||||
}
|
||||
if (nc->window != cwindow && nc->window != NULL) {
|
||||
window_free(nc->window);
|
||||
}
|
||||
nc->window = cwindow;
|
||||
x_reinit(nc);
|
||||
|
||||
|
|
|
@ -266,11 +266,8 @@ bool tree_close_internal(Con *con, kill_window_t kill_window, bool dont_kill_par
|
|||
add_ignore_event(cookie.sequence, 0);
|
||||
}
|
||||
ipc_send_window_event("close", con);
|
||||
FREE(con->window->class_class);
|
||||
FREE(con->window->class_instance);
|
||||
i3string_free(con->window->name);
|
||||
FREE(con->window->ran_assignments);
|
||||
FREE(con->window);
|
||||
window_free(con->window);
|
||||
con->window = NULL;
|
||||
}
|
||||
|
||||
Con *ws = con_get_workspace(con);
|
||||
|
|
12
src/window.c
12
src/window.c
|
@ -11,6 +11,18 @@
|
|||
*/
|
||||
#include "all.h"
|
||||
|
||||
/*
|
||||
* Frees an i3Window and all its members.
|
||||
*
|
||||
*/
|
||||
void window_free(i3Window *win) {
|
||||
FREE(win->class_class);
|
||||
FREE(win->class_instance);
|
||||
i3string_free(win->name);
|
||||
FREE(win->ran_assignments);
|
||||
FREE(win);
|
||||
}
|
||||
|
||||
/*
|
||||
* Updates the WM_CLASS (consisting of the class and instance) for the
|
||||
* given window.
|
||||
|
|
Loading…
Reference in New Issue