From: Christian Persch Date: Fri, 3 Sep 2010 19:43:03 +0000 (-0400) Subject: Plug some huge mem leaks in converter-stream test X-Git-Tag: 2.25.16~133 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=94102a40f733dc86e61aaaee0822b8ecc2e9927b;p=platform%2Fupstream%2Fglib.git 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. --- 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 {