From adea9fb25210f2d04bcf2453c18847fb965927f7 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 17 Apr 2012 11:46:50 -0400 Subject: [PATCH] GConverterInputStream: fix an infinite loop when fill_buffer returns an error The loop was using a GConverterResult variable where it meant to use a gssize, and since GConverterResult was ending up as an unsigned type, this meant the (res < 0) check always failed. --- gio/gconverterinputstream.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gio/gconverterinputstream.c b/gio/gconverterinputstream.c index d81cd90f8..2fbf94db6 100644 --- a/gio/gconverterinputstream.c +++ b/gio/gconverterinputstream.c @@ -495,18 +495,18 @@ g_converter_input_stream_read (GInputStream *stream, { /* Need more data */ my_error2 = NULL; - res = fill_input_buffer (cstream, - buffer_data_size (&priv->input_buffer) + 4096, - cancellable, - &my_error2); - if (res < 0) + nread = fill_input_buffer (cstream, + buffer_data_size (&priv->input_buffer) + 4096, + cancellable, + &my_error2); + if (nread < 0) { /* Can't read any more data, return that error */ g_error_free (my_error); g_propagate_error (error, my_error2); return -1; } - else if (res == 0) + else if (nread == 0) { /* End of file, try INPUT_AT_END */ priv->at_input_end = TRUE;