diff --git a/docs/reference/gio/gio-sections.txt b/docs/reference/gio/gio-sections.txt index 71422276e..6bec1208f 100644 --- a/docs/reference/gio/gio-sections.txt +++ b/docs/reference/gio/gio-sections.txt @@ -863,6 +863,7 @@ GBufferedOutputStreamPrivate GReallocFunc GMemoryOutputStream g_memory_output_stream_new +g_memory_output_stream_new_resizable g_memory_output_stream_get_data g_memory_output_stream_get_size g_memory_output_stream_get_data_size diff --git a/gio/gio.symbols b/gio/gio.symbols index afffd7dfe..9df4fefed 100644 --- a/gio/gio.symbols +++ b/gio/gio.symbols @@ -573,6 +573,7 @@ g_memory_input_stream_add_bytes g_memory_input_stream_add_data g_memory_output_stream_get_type g_memory_output_stream_new +g_memory_output_stream_new_resizable g_memory_output_stream_get_data g_memory_output_stream_get_data_size g_memory_output_stream_get_size diff --git a/gio/gmemoryoutputstream.c b/gio/gmemoryoutputstream.c index 378bf3cfe..542732b6d 100644 --- a/gio/gmemoryoutputstream.c +++ b/gio/gmemoryoutputstream.c @@ -381,6 +381,20 @@ g_memory_output_stream_new (gpointer data, return stream; } +/** + * g_memory_output_stream_new_resizable: + * + * Creates a new #GMemoryOutputStream, using g_realloc() and g_free() + * for memory allocation. + * + * Since: 2.36 + */ +GOutputStream * +g_memory_output_stream_new_resizable (void) +{ + return g_memory_output_stream_new (NULL, 0, g_realloc, g_free); +} + /** * g_memory_output_stream_get_data: * @ostream: a #GMemoryOutputStream diff --git a/gio/gmemoryoutputstream.h b/gio/gmemoryoutputstream.h index faf0364c2..8be37e6da 100644 --- a/gio/gmemoryoutputstream.h +++ b/gio/gmemoryoutputstream.h @@ -88,6 +88,8 @@ GOutputStream *g_memory_output_stream_new (gpointer data, gsize size, GReallocFunc realloc_function, GDestroyNotify destroy_function); +GLIB_AVAILABLE_IN_2_36 +GOutputStream *g_memory_output_stream_new_resizable (void); gpointer g_memory_output_stream_get_data (GMemoryOutputStream *ostream); gsize g_memory_output_stream_get_size (GMemoryOutputStream *ostream); gsize g_memory_output_stream_get_data_size (GMemoryOutputStream *ostream); diff --git a/gio/tests/memory-output-stream.c b/gio/tests/memory-output-stream.c index e9bfc3d05..3399bbe00 100644 --- a/gio/tests/memory-output-stream.c +++ b/gio/tests/memory-output-stream.c @@ -34,7 +34,7 @@ test_truncate (void) g_test_bug ("540423"); - mo = g_memory_output_stream_new (NULL, 0, g_realloc, g_free); + mo = g_memory_output_stream_new_resizable (); g_assert (g_seekable_can_truncate (G_SEEKABLE (mo))); o = g_data_output_stream_new (mo); for (i = 0; i < 1000; i++) @@ -86,7 +86,7 @@ test_data_size (void) g_test_bug ("540459"); - mo = g_memory_output_stream_new (NULL, 0, g_realloc, g_free); + mo = g_memory_output_stream_new_resizable (); o = g_data_output_stream_new (mo); g_data_output_stream_put_byte (o, 1, NULL, NULL); pos = g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (mo));