Re: [PATCH glib] gobject-stream: fix issue found by coverity

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hey,

On Thu, Feb 20, 2014 at 01:49:31PM +0100, Pavel Hrdina wrote:
> The coverity server found issue in gvir_stream_close function that
> we ignore return values of g_input_stream_close and
> g_outpu_stream_close, but we also ignore the error message and we

missing 't' in g_output_stream_close

> assume that it's closed without error.
> 
> Now we will check return values and also propagate the error message
> to the upper layers.
> 
> Signed-off-by: Pavel Hrdina <phrdina@xxxxxxxxxx>
> ---
>  libvirt-gobject/libvirt-gobject-stream.c | 24 ++++++++++++++++++++----
>  1 file changed, 20 insertions(+), 4 deletions(-)
> 
> diff --git a/libvirt-gobject/libvirt-gobject-stream.c b/libvirt-gobject/libvirt-gobject-stream.c
> index 1572022..66a12ab 100644
> --- a/libvirt-gobject/libvirt-gobject-stream.c
> +++ b/libvirt-gobject/libvirt-gobject-stream.c
> @@ -102,17 +102,33 @@ static GOutputStream* gvir_stream_get_output_stream(GIOStream *io_stream)
>  
>  static gboolean gvir_stream_close(GIOStream *io_stream,
>                                    GCancellable *cancellable,
> -                                  G_GNUC_UNUSED GError **error)
> +                                  GError **error)
>  {
>      GVirStream *self = GVIR_STREAM(io_stream);
> +    GError *local_error = NULL;
> +    gboolean i_ret = TRUE, o_ret = TRUE;
>  
>      if (self->priv->input_stream)
> -        g_input_stream_close(self->priv->input_stream, cancellable, NULL);
> +        i_ret = g_input_stream_close(self->priv->input_stream, cancellable, &local_error);
> +
> +    if (local_error) {
> +        if (!*error)
> +            g_propagate_error(error, local_error);
> +        else
> +            g_error_free(local_error);
> +    }

g_propagate_error will be doing this if (!*error) check for you, so this
can be written as
if (local_error)
    g_propagate_error(error, local_error);



void                g_propagate_error                   (GError **dest,
                                                         GError *src);
If dest is NULL, free src; otherwise, moves src into *dest.


Christophe

Attachment: pgpKzPjpZhD05.pgp
Description: PGP signature

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]