1
0
mirror of https://github.com/tmate-io/tmate-ssh-server.git synced 2020-11-18 19:53:51 -08:00

Allow lastgc to be NULL in grid_string_cells so find-window doesn't

crash, problem reported by eugene everson.
This commit is contained in:
Nicholas Marriott 2013-03-25 10:07:40 +00:00
parent 35452b3e55
commit 304336a591

12
grid.c
View File

@ -583,7 +583,7 @@ grid_string_cells_code(const struct grid_cell *lastgc,
/* Convert cells into a string. */ /* Convert cells into a string. */
char * char *
grid_string_cells(struct grid *gd, u_int px, u_int py, u_int nx, 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; const struct grid_cell *gc;
static struct grid_cell lastgc1; 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); 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); memcpy(&lastgc1, &grid_default_cell, sizeof lastgc1);
*lastgc = &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; data = ud.data;
size = ud.size; size = ud.size;
if (escape_c0 && size == 1 && *data == '\\') { if (escape_c0 && size == 1 && *data == '\\') {
data = "\\"; data = "\\\\";
size = 2; size = 2;
} }
@ -638,8 +638,10 @@ grid_string_cells(struct grid *gd, u_int px, u_int py, u_int nx,
off += size; off += size;
} }
while (off > 0 && buf[off - 1] == ' ') if (trim) {
off--; while (off > 0 && buf[off - 1] == ' ')
off--;
}
buf[off] = '\0'; buf[off] = '\0';
return (buf); return (buf);