From 6e55cb86b9efce7fa6c192faa55a85f46469d74c Mon Sep 17 00:00:00 2001 From: Dave Davenport Date: Fri, 30 Dec 2016 17:33:24 +0100 Subject: Work-around for detecting end of file, hopefully fixing #518. --- source/dialogs/dmenu.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'source/dialogs') diff --git a/source/dialogs/dmenu.c b/source/dialogs/dmenu.c index fa9fb28a..3f421087 100644 --- a/source/dialogs/dmenu.c +++ b/source/dialogs/dmenu.c @@ -130,7 +130,6 @@ static void async_read_callback ( GObject *source_object, GAsyncResult *res, gpo if ( data != NULL ) { // Absorb separator, already in buffer so should not block. g_data_input_stream_read_byte ( stream, NULL, NULL ); - read_add ( pd, data, len ); g_free ( data ); rofi_view_reload (); @@ -138,6 +137,22 @@ static void async_read_callback ( GObject *source_object, GAsyncResult *res, gpo g_data_input_stream_read_upto_async ( pd->data_input_stream, &( pd->separator ), 1, G_PRIORITY_LOW, pd->cancel, async_read_callback, pd ); return; + } else { + GError *error = NULL; + // Absorb separator, already in buffer so should not block. + // If error == NULL end of stream.. + g_data_input_stream_read_byte ( stream, NULL, &error); + if ( error == NULL ) { + // Add empty line. + read_add ( pd, "", 0); + rofi_view_reload (); + + g_data_input_stream_read_upto_async ( pd->data_input_stream, &( pd->separator ), 1, G_PRIORITY_LOW, pd->cancel, + async_read_callback, pd ); + return; + } else { + g_error_free (error); + } } if ( !g_cancellable_is_cancelled ( pd->cancel ) ) { // Hack, don't use get active. -- cgit v1.2.3