Free owindow when no con_id match or window

This memory leak is related to matching on con_id or matching when the
container has a null window. In that case, windows that do not match
would leak the owindow struct.
This commit is contained in:
Tony Crisci 2014-03-19 04:56:34 -04:00 committed by Michael Stapelberg
parent 587273505c
commit 0c3735fc23
1 changed files with 4 additions and 3 deletions

View File

@ -298,15 +298,16 @@ void cmd_criteria_match_windows(I3_CMD) {
if (current_match->con_id == current->con) { if (current_match->con_id == current->con) {
DLOG("matches container!\n"); DLOG("matches container!\n");
TAILQ_INSERT_TAIL(&owindows, current, owindows); TAILQ_INSERT_TAIL(&owindows, current, owindows);
} else {
DLOG("doesnt match\n");
free(current);
} }
} else if (current_match->mark != NULL && current->con->mark != NULL && } else if (current_match->mark != NULL && current->con->mark != NULL &&
regex_matches(current_match->mark, current->con->mark)) { regex_matches(current_match->mark, current->con->mark)) {
DLOG("match by mark\n"); DLOG("match by mark\n");
TAILQ_INSERT_TAIL(&owindows, current, owindows); TAILQ_INSERT_TAIL(&owindows, current, owindows);
} else { } else {
if (current->con->window == NULL) if (current->con->window && match_matches_window(current_match, current->con->window)) {
continue;
if (match_matches_window(current_match, current->con->window)) {
DLOG("matches window!\n"); DLOG("matches window!\n");
TAILQ_INSERT_TAIL(&owindows, current, owindows); TAILQ_INSERT_TAIL(&owindows, current, owindows);
} else { } else {