From a4d346627cc661f32bc7fb65a43ff19d48b50a96 Mon Sep 17 00:00:00 2001
From: Ian Fan <ianfan0@gmail.com>
Date: Sat, 22 Sep 2018 10:57:22 +0100
Subject: [PATCH] swaybar: explicitly check return value of getdelim

This prevents an signed-to-unsigned conversion error on buffer_index if
getdelim fails and returns -1, which caused swaybar to try to search the
header for the array and immediately failing
---
 swaybar/status_line.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/swaybar/status_line.c b/swaybar/status_line.c
index 401bf6f6f..48b43248f 100644
--- a/swaybar/status_line.c
+++ b/swaybar/status_line.c
@@ -67,9 +67,13 @@ bool status_handle_readable(struct status_line *status) {
 
 			wl_list_init(&status->blocks);
 			status->tokener = json_tokener_new();
-			status->buffer_index = getdelim(&status->buffer,
-					&status->buffer_size, EOF, status->read);
-			return i3bar_handle_readable(status);
+			read_bytes = getdelim(&status->buffer, &status->buffer_size, EOF, status->read);
+			if (read_bytes > 0) {
+				status->buffer_index = read_bytes;
+				return i3bar_handle_readable(status);
+			} else {
+				return false;
+			}
 		}
 
 		wlr_log(WLR_DEBUG, "Using text protocol.");