diff --git a/gio/goutputstream.c b/gio/goutputstream.c index 1348208dd..dfecfb2fc 100644 --- a/gio/goutputstream.c +++ b/gio/goutputstream.c @@ -216,7 +216,7 @@ g_output_stream_write (GOutputStream *stream, gssize res; g_return_val_if_fail (G_IS_OUTPUT_STREAM (stream), -1); - g_return_val_if_fail (buffer != NULL, 0); + g_return_val_if_fail (buffer != NULL || count == 0, 0); if (count == 0) return 0; diff --git a/gio/tests/memory-output-stream.c b/gio/tests/memory-output-stream.c index a517cb964..60733511f 100644 --- a/gio/tests/memory-output-stream.c +++ b/gio/tests/memory-output-stream.c @@ -307,6 +307,7 @@ test_write_null (void) { GOutputStream *mo; GError *error = NULL; + gssize bytes_written; g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/2471"); @@ -316,6 +317,10 @@ test_write_null (void) g_assert_cmpint (0, ==, g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (mo))); + bytes_written = g_output_stream_write (mo, NULL, 0, NULL, &error); + g_assert_no_error (error); + g_assert_cmpint (0, ==, bytes_written); + g_output_stream_close (mo, NULL, &error); g_assert_no_error (error); g_object_unref (mo);