OSDN Git Service

ucm: include - fix compound_merge for arrays
authorJaroslav Kysela <perex@perex.cz>
Mon, 15 Jun 2020 17:49:25 +0000 (19:49 +0200)
committerJaroslav Kysela <perex@perex.cz>
Mon, 15 Jun 2020 17:49:27 +0000 (19:49 +0200)
There is a case where the original array has already new indexes
(the merged array is placed before the original nodes).

Set the temporary index string identifiers to unique strings.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/ucm/ucm_include.c

index 345e4cc..c69490f 100644 (file)
@@ -149,6 +149,18 @@ static int compound_merge(const char *id,
        }
 
        idx = 0;
+
+       /* for array, use a temporary non-clashing identifier */
+       if (array > 0) {
+               snd_config_for_each(i, next, dst) {
+                       n = snd_config_iterator_entry(i);
+                       snprintf(tmpid, sizeof(tmpid), "_tmp_%d", idx++);
+                       err = snd_config_set_id(n, tmpid);
+                       if (err < 0)
+                               return err;
+               }
+       }
+
        snd_config_for_each(i, next, src) {
                n = snd_config_iterator_entry(i);
                err = snd_config_remove(n);