summaryrefslogtreecommitdiffstats
path: root/format-draw.c
diff options
context:
space:
mode:
authornicm <nicm>2019-03-20 07:28:31 +0000
committernicm <nicm>2019-03-20 07:28:31 +0000
commit458b87150b3fe989bb3d5d611f1d010a71839117 (patch)
tree3fa3fead16a630d7d42a5d9de4a1d23c052223ca /format-draw.c
parentae46a19b8e2bafd7c3fc5cba99b9f430c8cf9b1c (diff)
Do not leak ranges on error.
Diffstat (limited to 'format-draw.c')
-rw-r--r--format-draw.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/format-draw.c b/format-draw.c
index 40ba27bf..ed50236f 100644
--- a/format-draw.c
+++ b/format-draw.c
@@ -577,7 +577,9 @@ format_draw(struct screen_write_ctx *octx, const struct grid_cell *base,
end = format_skip(cp + 2, "]");
if (end == NULL) {
log_debug("no terminating ] at '%s'", cp + 2);
- return;
+ TAILQ_FOREACH_SAFE(fr, &frs, entry, fr1)
+ format_free_range(&frs, fr);
+ goto out;
}
tmp = xstrndup(cp + 2, end - (cp + 2));
if (style_parse(&sy, base, tmp) != 0) {
@@ -755,6 +757,7 @@ format_draw(struct screen_write_ctx *octx, const struct grid_cell *base,
format_free_range(&frs, fr);
}
+out:
/* Free the screens. */
for (i = 0; i < TOTAL; i++)
screen_free(&s[i]);