return 0;
}
-static int merge_it(snd_config_t *dst, snd_config_t *n)
+static int merge_it(snd_config_t *dst, snd_config_t *n, snd_config_t **_dn)
{
snd_config_t *dn;
const char *id;
err = snd_config_merge(dn, n, 0); /* merge / append mode */
if (err < 0)
snd_config_delete(n);
+ else
+ *_dn = dn;
return err;
}
if (_before) {
err = snd_config_add_before(_before, n);
if (err == -EEXIST)
- err = merge_it(dst, n);
+ err = merge_it(dst, n, &n);
if (err < 0)
return err;
_before = NULL;
} else if (_after) {
err = snd_config_add_after(_after, n);
if (err == -EEXIST)
- err = merge_it(dst, n);
+ err = merge_it(dst, n, &n);
if (err < 0)
return err;
_after = n;