config: fix cloning of env_vars tllist

When cloning a config struct, the env_vars tllist wasn't correctly
copied. We did correctly iterate and duplicate all old entries, but we
did *not* reset the list in the cloned struct before doing so.

This meant the list contained entries shared with the original list,
causing double free:s in --server mode.
This commit is contained in:
Daniel Eklöf 2024-01-10 16:41:03 +01:00
parent a2283c8229
commit 208008d717
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 4 additions and 0 deletions

View file

@ -3393,6 +3393,8 @@ config_clone(const struct config *old)
key_binding_list_clone(&conf->bindings.url, &old->bindings.url);
key_binding_list_clone(&conf->bindings.mouse, &old->bindings.mouse);
conf->env_vars.length = 0;
conf->env_vars.head = conf->env_vars.tail = NULL;
tll_foreach(old->env_vars, it) {
struct env_var copy = {
.name = xstrdup(it->item.name),