From 69e980602b31732348aaceee045a1901dc982d78 Mon Sep 17 00:00:00 2001 From: nicm Date: Mon, 26 Sep 2016 09:02:34 +0000 Subject: Support set -a (append) with user options, suggested by Xandor Schiefer. --- options.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'options.c') diff --git a/options.c b/options.c index df79ac4b..cd3bd8ec 100644 --- a/options.c +++ b/options.c @@ -128,19 +128,23 @@ options_set_string(struct options *oo, const char *name, const char *fmt, ...) { struct options_entry *o; va_list ap; + char *s; + s = NULL; if ((o = options_find1(oo, name)) == NULL) { o = xmalloc(sizeof *o); o->name = xstrdup(name); RB_INSERT(options_tree, &oo->tree, o); memcpy(&o->style, &grid_default_cell, sizeof o->style); } else if (o->type == OPTIONS_STRING) - free(o->str); + s = o->str; va_start(ap, fmt); o->type = OPTIONS_STRING; xvasprintf(&o->str, fmt, ap); va_end(ap); + + free(s); return (o); } -- cgit v1.2.3