[PATCH weston] clients: fix errno handling

Emilio Pozuelo Monfort pochu27 at gmail.com
Wed Jan 18 11:44:53 UTC 2017


On 18/01/17 01:53, Peter Hutterer wrote:
> clients/editor.c: In function ‘read_file’:
> clients/editor.c:1578:16: warning: logical ‘or’ applied to non-boolean
> constant [-Wlogical-op]
>   errno = errsv || EINVAL;
> 
> This works in the shell, but not in C. Introduced in 411ffabbb56b
> 
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
>  clients/editor.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/clients/editor.c b/clients/editor.c
> index f1dffe1..135dd9f 100644
> --- a/clients/editor.c
> +++ b/clients/editor.c
> @@ -1575,7 +1575,8 @@ error:
>  	if (fin)
>  		fclose(fin);
>  	free(buffer);
> -	errno = errsv || EINVAL;
> +	if (errsv == 0)
> +		errno = EINVAL;

Shouldn't you add

	else
		errno = errsv;

?

Otherwise you may not return the original errno, but errno==0 instead (e.g. if
fclose() succeeded), which would be wrong.

Cheers,
Emilio

>  
>  	return NULL;
>  }
> 



More information about the wayland-devel mailing list