diff options
author | emersion <contact@emersion.fr> | 2018-04-09 08:10:51 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-09 08:10:51 -0400 |
commit | 78b6ac6aa1377948182a3f7e4bc108bd87d25e0e (patch) | |
tree | a5c038206a9244cb7098f3199c834cba2570b965 | |
parent | Merge pull request #1769 from acrisci/focus-inactive-fixes (diff) | |
parent | Fix some more bugs (diff) | |
download | sway-78b6ac6aa1377948182a3f7e4bc108bd87d25e0e.tar.gz sway-78b6ac6aa1377948182a3f7e4bc108bd87d25e0e.tar.zst sway-78b6ac6aa1377948182a3f7e4bc108bd87d25e0e.zip |
Merge pull request #1783 from RyanDwyer/swaybar-buffer-fixes
Fix buffer issues in swaybar status line
-rw-r--r-- | swaybar/i3bar.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/swaybar/i3bar.c b/swaybar/i3bar.c index ed134a01..923ad755 100644 --- a/swaybar/i3bar.c +++ b/swaybar/i3bar.c | |||
@@ -113,8 +113,9 @@ bool i3bar_handle_readable(struct status_line *status) { | |||
113 | char *cur = &state->buffer[state->buffer_index]; | 113 | char *cur = &state->buffer[state->buffer_index]; |
114 | ssize_t n = read(status->read_fd, cur, | 114 | ssize_t n = read(status->read_fd, cur, |
115 | state->buffer_size - state->buffer_index); | 115 | state->buffer_size - state->buffer_index); |
116 | if (n == 0) { | 116 | if (n == -1) { |
117 | return 0; | 117 | status_error(status, "[failed to read from status command]"); |
118 | return false; | ||
118 | } | 119 | } |
119 | 120 | ||
120 | if (n == (ssize_t)(state->buffer_size - state->buffer_index)) { | 121 | if (n == (ssize_t)(state->buffer_size - state->buffer_index)) { |
@@ -123,11 +124,14 @@ bool i3bar_handle_readable(struct status_line *status) { | |||
123 | if (!new_buffer) { | 124 | if (!new_buffer) { |
124 | free(state->buffer); | 125 | free(state->buffer); |
125 | status_error(status, "[failed to allocate buffer]"); | 126 | status_error(status, "[failed to allocate buffer]"); |
126 | return -1; | 127 | return true; |
127 | } | 128 | } |
129 | state->current_node += new_buffer - state->buffer; | ||
130 | cur += new_buffer - state->buffer; | ||
128 | state->buffer = new_buffer; | 131 | state->buffer = new_buffer; |
129 | } | 132 | } |
130 | 133 | ||
134 | cur[n] = '\0'; | ||
131 | bool redraw = false; | 135 | bool redraw = false; |
132 | while (*cur) { | 136 | while (*cur) { |
133 | if (state->nodes[state->depth] == JSON_NODE_STRING) { | 137 | if (state->nodes[state->depth] == JSON_NODE_STRING) { |