summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmd-queue.c8
-rw-r--r--spawn.c3
2 files changed, 9 insertions, 2 deletions
diff --git a/cmd-queue.c b/cmd-queue.c
index 5df30940..59f86c64 100644
--- a/cmd-queue.c
+++ b/cmd-queue.c
@@ -243,8 +243,12 @@ cmdq_copy_state(struct cmdq_state *state)
void
cmdq_free_state(struct cmdq_state *state)
{
- if (--state->references == 0)
- free(state);
+ if (--state->references != 0)
+ return;
+
+ if (state->formats != NULL)
+ format_free(state->formats);
+ free(state);
}
/* Add a format to command queue. */
diff --git a/spawn.c b/spawn.c
index 0e7c6b3d..f1ea87d2 100644
--- a/spawn.c
+++ b/spawn.c
@@ -364,6 +364,7 @@ spawn_pane(struct spawn_context *sc, char **cause)
window_remove_pane(w, new_wp);
}
sigprocmask(SIG_SETMASK, &oldset, NULL);
+ environ_free(child);
return (NULL);
}
@@ -450,6 +451,8 @@ complete:
sigprocmask(SIG_SETMASK, &oldset, NULL);
window_pane_set_event(new_wp);
+ environ_free(child);
+
if (sc->flags & SPAWN_RESPAWN)
return (new_wp);
if ((~sc->flags & SPAWN_DETACHED) || w->active == NULL) {