John Keeping <j...@keeping.me.uk> writes:

> We are guaranteed that 'nst' is non-null because it is allocated with
> xmalloc(), and in fact we rely on this three lines later by
> unconditionally dereferencing it.

The intent of the original code is for attach_stream_filter() to
detect an error condition and return NULL, in which case it closes
the istream it allocated and signal error to the caller, I think,
and falling thru to use st->anything and return st when that happens
is *not* a guarantee that a-s-f will not detect an error ever, but
rather is a bug in the error codepath.

>
> Signed-off-by: John Keeping <j...@keeping.me.uk>
> ---
>  streaming.c | 5 +----
>  1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/streaming.c b/streaming.c
> index d7c9f32..8a7135d 100644
> --- a/streaming.c
> +++ b/streaming.c
> @@ -151,10 +151,7 @@ struct git_istream *open_istream(const unsigned char 
> *sha1,
>       }
>       if (filter) {
>               /* Add "&& !is_null_stream_filter(filter)" for performance */
> -             struct git_istream *nst = attach_stream_filter(st, filter);
> -             if (!nst)
> -                     close_istream(st);
> -             st = nst;
> +             st = attach_stream_filter(st, filter);
>       }
>  
>       *size = st->size;
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to