Justus Winter, le Wed 20 Nov 2013 14:38:00 +0100, a écrit :
> Found using the Clang Static Analyzer.
>
> * ftpfs/dir.c (refresh_dir): Fix error handling.
> ---
> ftpfs/dir.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/ftpfs/dir.c b/ftpfs/dir.c
> index da5ddbe..61c337b 100644
> --- a/ftpfs/dir.c
> +++ b/ftpfs/dir.c
> @@ -381,8 +381,12 @@ refresh_dir (struct ftpfs_dir *dir, int update_stats,
> time_t timestamp,
> /* Make sure `.' and `..' are always included (if the actual list also
> includes `.' and `..', the ordered may be rearranged). */
> err = update_ordered_name (".", &dfs);
> - if (! err)
> - err = update_ordered_name ("..", &dfs);
> + if (err)
> + goto out;
> +
> + err = update_ordered_name ("..", &dfs);
> + if (err)
> + goto out;
Mmm, the usual coding style would rather be to test !err before if
(update_stats)
> /* Refetch the directory from the server. */
> if (update_stats)
> @@ -407,6 +411,7 @@ refresh_dir (struct ftpfs_dir *dir, int update_stats,
> time_t timestamp,
> sweep (dir);
> }
>
> + out:
> ftpfs_release_ftp_conn (dir->fs, conn);
>
> return err;
> --
> 1.7.10.4
>
--
Samuel
<y> la vraie vie, c'est quand le prompt passe de $ à #