Use correct offset for buffer data in GConverterOutputStream
authorJürg Billeter <j@bitron.ch>
Fri, 28 May 2010 09:00:37 +0000 (11:00 +0200)
committerAlexander Larsson <alexl@redhat.com>
Fri, 11 Jun 2010 07:55:31 +0000 (09:55 +0200)
Otherwise we overwrite already converted data in the case that more
than one call to g_converter_convert is necessary in write() or
flush().

https://bugzilla.gnome.org/show_bug.cgi?id=619945

gio/gconverteroutputstream.c

index 7ad8d5e..f59733d 100644 (file)
@@ -427,7 +427,7 @@ g_converter_output_stream_write (GOutputStream *stream,
       res = g_converter_convert (priv->converter,
                                 to_convert + converted_bytes,
                                 to_convert_size - converted_bytes,
-                                buffer_data (&priv->converted_buffer),
+                                buffer_data (&priv->converted_buffer) + buffer_available (&priv->converted_buffer),
                                 buffer_tailspace (&priv->converted_buffer),
                                 0,
                                 &bytes_read,
@@ -542,7 +542,7 @@ g_converter_output_stream_flush (GOutputStream  *stream,
       res = g_converter_convert (priv->converter,
                                 buffer_data (&priv->output_buffer),
                                 buffer_available (&priv->output_buffer),
-                                buffer_data (&priv->converted_buffer),
+                                buffer_data (&priv->converted_buffer) + buffer_available (&priv->converted_buffer),
                                 buffer_tailspace (&priv->converted_buffer),
                                 is_closing ? G_CONVERTER_INPUT_AT_END : G_CONVERTER_FLUSH,
                                 &bytes_read,