diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2013-03-25 10:07:40 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2013-03-25 10:07:40 +0000 |
commit | 304336a5917db5778854c71afd4e1f19bb11e476 (patch) | |
tree | bf4efa50599e8dd2bb940b77c3a7745b1e038a23 /grid.c | |
parent | 35452b3e55aeaba7d64f604e32b31c80d3f80fde (diff) | |
download | rtmux-304336a5917db5778854c71afd4e1f19bb11e476.tar.gz rtmux-304336a5917db5778854c71afd4e1f19bb11e476.tar.bz2 rtmux-304336a5917db5778854c71afd4e1f19bb11e476.zip |
Allow lastgc to be NULL in grid_string_cells so find-window doesn't
crash, problem reported by eugene everson.
Diffstat (limited to 'grid.c')
-rw-r--r-- | grid.c | 12 |
1 files changed, 7 insertions, 5 deletions
@@ -583,7 +583,7 @@ grid_string_cells_code(const struct grid_cell *lastgc, /* Convert cells into a string. */ char * grid_string_cells(struct grid *gd, u_int px, u_int py, u_int nx, - struct grid_cell **lastgc, int with_codes, int escape_c0) + struct grid_cell **lastgc, int with_codes, int escape_c0, int trim) { const struct grid_cell *gc; static struct grid_cell lastgc1; @@ -595,7 +595,7 @@ grid_string_cells(struct grid *gd, u_int px, u_int py, u_int nx, GRID_DEBUG(gd, "px=%u, py=%u, nx=%u", px, py, nx); - if (*lastgc == NULL) { + if (lastgc != NULL && *lastgc == NULL) { memcpy(&lastgc1, &grid_default_cell, sizeof lastgc1); *lastgc = &lastgc1; } @@ -621,7 +621,7 @@ grid_string_cells(struct grid *gd, u_int px, u_int py, u_int nx, data = ud.data; size = ud.size; if (escape_c0 && size == 1 && *data == '\\') { - data = "\\"; + data = "\\\\"; size = 2; } @@ -638,8 +638,10 @@ grid_string_cells(struct grid *gd, u_int px, u_int py, u_int nx, off += size; } - while (off > 0 && buf[off - 1] == ' ') - off--; + if (trim) { + while (off > 0 && buf[off - 1] == ' ') + off--; + } buf[off] = '\0'; return (buf); |