summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2016-12-30 17:33:24 +0100
committerDave Davenport <qball@gmpclient.org>2016-12-30 17:33:24 +0100
commit6e55cb86b9efce7fa6c192faa55a85f46469d74c (patch)
tree9ac66534c8a9d7ca4a5869a623d488fa1aa8f071
parent0865e0f9d40de098ed56f0823be9ded966e7d7e9 (diff)
Work-around for detecting end of file, hopefully fixing #518.
-rw-r--r--source/dialogs/dmenu.c17
1 files changed, 16 insertions, 1 deletions
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.