Commit 6799e4a7 authored by Dan Winship's avatar Dan Winship
Browse files

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.
parent b62b5a3d
......@@ -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;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment