diff options
author | Ian Fan <ianfan0@gmail.com> | 2018-09-21 14:59:01 +0100 |
---|---|---|
committer | Ian Fan <ianfan0@gmail.com> | 2018-09-21 15:09:54 +0100 |
commit | ccdec2a329794356fdf559560261e5626a7e2098 (patch) | |
tree | 5499d14723fcc92cb3aecb5634d63c9fb062ed3f /swaybar | |
parent | swaybar: update buffer_pos when moving object to start of buffer (diff) | |
download | sway-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')
-rw-r--r-- | swaybar/i3bar.c | 1 |
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; |