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:
parent
587273505c
commit
0c3735fc23
|
@ -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 {
|
||||||
|
|
Loading…
Reference in New Issue