[alsa-devel] [PATCH] ucm: Return NULL from get_list0() and get_list20() in case of empty lists.

Takashi Iwai tiwai at suse.de
Wed Aug 1 15:48:32 CEST 2012


At Wed, 1 Aug 2012 16:06:16 +0300,
Tanu Kaskinen wrote:
> 
> 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.

Applied now.  Thanks.


Takashi

> ---
>  src/ucm/main.c |    8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/src/ucm/main.c b/src/ucm/main.c
> index 79901f8..4b37776 100644
> --- a/src/ucm/main.c
> +++ b/src/ucm/main.c
> @@ -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);
> -- 
> 1.7.9.5
> 
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> 


More information about the Alsa-devel mailing list