[glib] Plug some huge mem leaks in converter-stream test



commit 94102a40f733dc86e61aaaee0822b8ecc2e9927b
Author: Christian Persch <chpe gnome org>
Date:   Fri Sep 3 15:43:03 2010 -0400

    Plug some huge mem leaks in converter-stream test
    
    ==8564== 24,000,000 bytes in 6 blocks are possibly lost in loss record 592 of 594
    ==8564==    at 0x4005BDC: malloc (vg_replace_malloc.c:195)
    ==8564==    by 0x4057094: g_malloc (gmem.c:134)
    ==8564==    by 0x804AA37: test_corruption (converter-stream.c:589)
    ==8564==    by 0x804B05B: test_roundtrip (converter-stream.c:652)
    
    ==9459== 25,165,824 bytes in 6 blocks are possibly lost in loss record 593 of 594
    ==9459==    at 0x4005CD2: realloc (vg_replace_malloc.c:476)
    ==9459==    by 0x40571A5: g_realloc (gmem.c:181)
    ==9459==    by 0x41B08A3: array_resize (gmemoryoutputstream.c:501)
    ==9459==    by 0x41B0A5D: g_memory_output_stream_write (gmemoryoutputstream.c:578)
    ==9459==    by 0x41B57EF: g_output_stream_write (goutputstream.c:216)
    ==9459==    by 0x41B591B: g_output_stream_write_all (goutputstream.c:268)
    ==9459==    by 0x417D617: flush_buffer (gconverteroutputstream.c:359)
    ==9459==    by 0x417D958: g_converter_output_stream_write (gconverteroutputstream.c:502)
    ==9459==    by 0x41B5D7F: g_output_stream_real_splice (goutputstream.c:428)
    ==9459==    by 0x41B5C6C: g_output_stream_splice (goutputstream.c:380)
    ==9459==    by 0x804AB10: test_corruption (converter-stream.c:600)
    
    ==9785== 25,165,824 bytes in 6 blocks are possibly lost in loss record 592 of 592
    ==9785==    at 0x4005CD2: realloc (vg_replace_malloc.c:476)
    ==9785==    by 0x40571A5: g_realloc (gmem.c:181)
    ==9785==    by 0x41B08A3: array_resize (gmemoryoutputstream.c:501)
    ==9785==    by 0x41B0A5D: g_memory_output_stream_write (gmemoryoutputstream.c:578)
    ==9785==    by 0x41B5D7F: g_output_stream_real_splice (goutputstream.c:428)
    ==9785==    by 0x41B5C6C: g_output_stream_splice (goutputstream.c:380)
    ==9785==    by 0x804ADF1: test_corruption (converter-stream.c:622)
    ==9785==    by 0x804B06C: test_roundtrip (converter-stream.c:652)
    
    Bug #628331.

 gio/tests/converter-stream.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)
---
diff --git a/gio/tests/converter-stream.c b/gio/tests/converter-stream.c
index b66c5e5..ceafed7 100644
--- a/gio/tests/converter-stream.c
+++ b/gio/tests/converter-stream.c
@@ -592,7 +592,7 @@ test_corruption (GZlibCompressorFormat format, gint level)
   istream0 = g_memory_input_stream_new_from_data (data0,
     DATA_LENGTH * sizeof (guint32), NULL);
 
-  ostream1 = g_memory_output_stream_new (NULL, 0, g_realloc, NULL);
+  ostream1 = g_memory_output_stream_new (NULL, 0, g_realloc, g_free);
   compressor = G_CONVERTER (g_zlib_compressor_new (format, level));
   costream1 = g_converter_output_stream_new (ostream1, compressor);
   g_assert (g_converter_output_stream_get_converter (G_CONVERTER_OUTPUT_STREAM (costream1)) == compressor);
@@ -607,17 +607,17 @@ test_corruption (GZlibCompressorFormat format, gint level)
   g_assert_cmpint (fmt, ==, format);
   g_assert_cmpint (lvl, ==, level);
   g_object_unref (compressor);
-  data1 = g_memory_output_stream_get_data (G_MEMORY_OUTPUT_STREAM (ostream1));
+  data1 = g_memory_output_stream_steal_data (G_MEMORY_OUTPUT_STREAM (ostream1));
   data1_size = g_memory_output_stream_get_data_size (
     G_MEMORY_OUTPUT_STREAM (ostream1));
   g_object_unref (ostream1);
   g_object_unref (istream0);
 
-  istream1 = g_memory_input_stream_new_from_data (data1, data1_size, NULL);
+  istream1 = g_memory_input_stream_new_from_data (data1, data1_size, g_free);
   decompressor = G_CONVERTER (g_zlib_decompressor_new (format));
   cistream1 = g_converter_input_stream_new (istream1, decompressor);
 
-  ostream2 = g_memory_output_stream_new (NULL, 0, g_realloc, NULL);
+  ostream2 = g_memory_output_stream_new (NULL, 0, g_realloc, g_free);
 
   g_output_stream_splice (ostream2, cistream1, 0, NULL, &error);
   g_assert_no_error (error);
@@ -633,6 +633,7 @@ test_corruption (GZlibCompressorFormat format, gint level)
   g_object_unref (decompressor);
   g_object_unref (cistream1);
   g_object_unref (ostream2);
+  g_free (data0);
 }
 
 typedef struct {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]