OSDN Git Service

ucm: Return NULL from get_list0() and get_list20() in case of empty lists.
authorTanu Kaskinen <tanu.kaskinen@digia.com>
Wed, 1 Aug 2012 13:06:16 +0000 (16:06 +0300)
committerTakashi Iwai <tiwai@suse.de>
Wed, 1 Aug 2012 13:47:27 +0000 (15:47 +0200)
alloc_str_list() sets the result to NULL too, so this patch
makes the behavior more consistent. This also fixes a crash
in PulseAudio, because PulseAudio assumes that
snd_use_case_get_list() always initializes the result, and
since snd_use_case_get_list() uses get_list20(), this
assumption didn't hold.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
src/ucm/main.c

index 79901f8..4b37776 100644 (file)
@@ -367,8 +367,10 @@ static int get_list0(struct list_head *list,
        char *ptr, *str1;
 
        cnt = alloc_str_list(list, 1, &res);
-       if (cnt <= 0)
+       if (cnt <= 0) {
+               *result = NULL;
                return cnt;
+       }
        *result = (const char **)res;
        list_for_each(pos, list) {
                ptr = list_entry_offset(pos, char, offset);
@@ -414,8 +416,10 @@ static int get_list20(struct list_head *list,
        char *ptr, *str1, *str2;
 
        cnt = alloc_str_list(list, 2, &res);
-       if (cnt <= 0)
+       if (cnt <= 0) {
+               *result = NULL;
                return cnt;
+       }
         *result = (const char **)res;
        list_for_each(pos, list) {
                ptr = list_entry_offset(pos, char, offset);