Commit 86592d67 authored by Jürg Billeter's avatar Jürg Billeter Committed by Alexander Larsson

Ensure we always have some target space in GConverterOutputStream

When the converter fills the whole buffer without reading all input,
we need to enlarge the buffer. Otherwise we get an assertion failure
for `outbuf_size > 0' in g_converter_convert.

https://bugzilla.gnome.org/show_bug.cgi?id=619945
parent 85ea72c0
......@@ -418,6 +418,10 @@ g_converter_output_stream_write (GOutputStream *stream,
converted_bytes = 0;
while (!priv->finished && converted_bytes < to_convert_size)
{
/* Ensure we have *some* target space */
if (buffer_tailspace (&priv->converted_buffer) == 0)
grow_buffer (&priv->converted_buffer);
/* Try to convert to our buffer */
my_error = NULL;
res = g_converter_convert (priv->converter,
......@@ -529,6 +533,10 @@ g_converter_output_stream_flush (GOutputStream *stream,
flushed = FALSE;
while (!priv->finished && !flushed)
{
/* Ensure we have *some* target space */
if (buffer_tailspace (&priv->converted_buffer) == 0)
grow_buffer (&priv->converted_buffer);
/* Try to convert to our buffer */
my_error = NULL;
res = g_converter_convert (priv->converter,
......
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