]> git.alsa-project.org Git - alsa-utils.git/commitdiff
topology: pre-processor: fix seg fault when there no command line defines
authorRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Fri, 28 Jan 2022 21:36:03 +0000 (13:36 -0800)
committerJaroslav Kysela <perex@perex.cz>
Fri, 28 Jan 2022 21:39:45 +0000 (22:39 +0100)
In case there are not command line definitions, there is nothing to
merge or delete.

Fixes: https://github.com/alsa-project/alsa-utils/pull/141
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
topology/pre-processor.c

index 3a227e386530d8ca3f2c0b3917f222d1e0a2b2d8..fad14dc586b9e83ce792eb464e7b49f7a6a1019b 100644 (file)
@@ -172,7 +172,8 @@ void free_pre_processor(struct tplg_pre_processor *tplg_pp)
        snd_output_close(tplg_pp->output);
        snd_output_close(tplg_pp->dbg_output);
        snd_config_delete(tplg_pp->output_cfg);
-       snd_config_delete(tplg_pp->define_cfg);
+       if (tplg_pp->define_cfg)
+               snd_config_delete(tplg_pp->define_cfg);
        free(tplg_pp->inc_path);
        free(tplg_pp);
 }
@@ -295,16 +296,18 @@ create:
         * merge the command line defines with the variables in the conf file to override
         * default values; use a copy (merge deletes the source tree)
         */
-       ret = snd_config_copy(&conf_tmp, tplg_pp->define_cfg);
-       if (ret < 0) {
-               fprintf(stderr, "Failed to copy variable definitions\n");
-               return ret;
-       }
-       ret = snd_config_merge(tplg_pp->define_cfg_merged, conf_tmp, true);
-       if (ret < 0) {
-               fprintf(stderr, "Failed to override variable definitions\n");
-               snd_config_delete(conf_tmp);
-               return ret;
+       if (tplg_pp->define_cfg) {
+               ret = snd_config_copy(&conf_tmp, tplg_pp->define_cfg);
+               if (ret < 0) {
+                       fprintf(stderr, "Failed to copy variable definitions\n");
+                       return ret;
+               }
+               ret = snd_config_merge(tplg_pp->define_cfg_merged, conf_tmp, true);
+               if (ret < 0) {
+                       fprintf(stderr, "Failed to override variable definitions\n");
+                       snd_config_delete(conf_tmp);
+                       return ret;
+               }
        }
 
        return 0;