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