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.
This commit is contained in:
Dan Winship 2012-04-17 11:46:50 -04:00
parent 2ef1a8ef05
commit adea9fb252

View File

@ -495,18 +495,18 @@ g_converter_input_stream_read (GInputStream *stream,
{
/* Need more data */
my_error2 = NULL;
res = fill_input_buffer (cstream,
nread = fill_input_buffer (cstream,
buffer_data_size (&priv->input_buffer) + 4096,
cancellable,
&my_error2);
if (res < 0)
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;