From ccdec2a329794356fdf559560261e5626a7e2098 Mon Sep 17 00:00:00 2001 From: Ian Fan Date: Fri, 21 Sep 2018 14:59:01 +0100 Subject: swaybar: reset tokener if json is incomplete If the tokener parses incomplete json, it sets its error value to json_tokener_continue. This means that extra json should be provided, but the code was providing the entire object again. In the interest of simplicity, the tokener is reset so that buffer_pos always points to the start of the current object. --- swaybar/i3bar.c | 1 + 1 file changed, 1 insertion(+) (limited to 'swaybar') diff --git a/swaybar/i3bar.c b/swaybar/i3bar.c index 4ea9c4c1..02b68a2a 100644 --- a/swaybar/i3bar.c +++ b/swaybar/i3bar.c @@ -199,6 +199,7 @@ bool i3bar_handle_readable(struct status_line *status) { } buffer_pos = status->buffer_index = 0; } else if (json_tokener_get_error(status->tokener) == json_tokener_continue) { + json_tokener_reset(status->tokener); if (status->buffer_index < status->buffer_size) { // move the object to the start of the buffer status->buffer_index -= buffer_pos; -- cgit v1.2.3-54-g00ecf