diff --git a/b2/bom.c b/b2/bom.c index 89cb31a..0da4a10 100644 --- a/b2/bom.c +++ b/b2/bom.c @@ -146,11 +146,13 @@ int bom_subst(struct bom *b, const struct subst *sub) /* run substitutions */ res = substitute(sub, vars, &out); - free_vars(vars); - if (res) - b->vars = out; - else + if (res) { + b->vars = merge_vars(vars, out); + free_vars(out); + } else { n_bom--; + } + free_vars(vars); return res; }