aboutsummaryrefslogtreecommitdiffstats
path: root/swaybar/i3bar.c
diff options
context:
space:
mode:
authorLibravatar Ian Fan <ianfan0@gmail.com>2018-09-21 14:59:01 +0100
committerLibravatar Ian Fan <ianfan0@gmail.com>2018-09-21 15:09:54 +0100
commitccdec2a329794356fdf559560261e5626a7e2098 (patch)
tree5499d14723fcc92cb3aecb5634d63c9fb062ed3f /swaybar/i3bar.c
parentswaybar: update buffer_pos when moving object to start of buffer (diff)
downloadsway-ccdec2a329794356fdf559560261e5626a7e2098.tar.gz
sway-ccdec2a329794356fdf559560261e5626a7e2098.tar.zst
sway-ccdec2a329794356fdf559560261e5626a7e2098.zip
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.
Diffstat (limited to 'swaybar/i3bar.c')
-rw-r--r--swaybar/i3bar.c1
1 files changed, 1 insertions, 0 deletions
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) {
199 } 199 }
200 buffer_pos = status->buffer_index = 0; 200 buffer_pos = status->buffer_index = 0;
201 } else if (json_tokener_get_error(status->tokener) == json_tokener_continue) { 201 } else if (json_tokener_get_error(status->tokener) == json_tokener_continue) {
202 json_tokener_reset(status->tokener);
202 if (status->buffer_index < status->buffer_size) { 203 if (status->buffer_index < status->buffer_size) {
203 // move the object to the start of the buffer 204 // move the object to the start of the buffer
204 status->buffer_index -= buffer_pos; 205 status->buffer_index -= buffer_pos;