i3 - improved tiling WM


Free owindow when no con_id match or window

Patch status: merged

Patch by Tony Crisci

Long description:

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.

To apply this patch, use:
curl http://cr.i3wm.org/patch/482/raw.patch | git am

b/src/commands.c

16
@@ -297,15 +297,16 @@ void cmd_criteria_match_windows(I3_CMD) {
17
             if (current_match->con_id == current->con) {
18
                 DLOG("matches container!\n");
19
                 TAILQ_INSERT_TAIL(&owindows, current, owindows);
20
+            } else {
21
+                DLOG("doesnt match\n");
22
+                free(current);
23
             }
24
         } else if (current_match->mark != NULL && current->con->mark != NULL &&
25
                    regex_matches(current_match->mark, current->con->mark)) {
26
             DLOG("match by mark\n");
27
             TAILQ_INSERT_TAIL(&owindows, current, owindows);
28
         } else {
29
-            if (current->con->window == NULL)
30
-                continue;
31
-            if (match_matches_window(current_match, current->con->window)) {
32
+            if (current->con->window && match_matches_window(current_match, current->con->window)) {
33
                 DLOG("matches window!\n");
34
                 TAILQ_INSERT_TAIL(&owindows, current, owindows);
35
             } else {