Merge branch 'obsd-master'

This commit is contained in:
Thomas Adam
2019-09-25 00:01:25 +01:00
4 changed files with 34 additions and 24 deletions

22
grid.c
View File

@ -186,17 +186,19 @@ grid_clear_cell(struct grid *gd, u_int px, u_int py, u_int bg)
struct grid_cell *gc; struct grid_cell *gc;
memcpy(gce, &grid_cleared_entry, sizeof *gce); memcpy(gce, &grid_cleared_entry, sizeof *gce);
if (bg & COLOUR_FLAG_RGB) { if (bg != 8) {
grid_get_extended_cell(gl, gce, gce->flags); if (bg & COLOUR_FLAG_RGB) {
gl->flags |= GRID_LINE_EXTENDED; grid_get_extended_cell(gl, gce, gce->flags);
gl->flags |= GRID_LINE_EXTENDED;
gc = &gl->extddata[gce->offset]; gc = &gl->extddata[gce->offset];
memcpy(gc, &grid_cleared_cell, sizeof *gc); memcpy(gc, &grid_cleared_cell, sizeof *gc);
gc->bg = bg; gc->bg = bg;
} else { } else {
if (bg & COLOUR_FLAG_256) if (bg & COLOUR_FLAG_256)
gce->flags |= GRID_FLAG_BG256; gce->flags |= GRID_FLAG_BG256;
gce->data.bg = bg; gce->data.bg = bg;
}
} }
} }

27
input.c
View File

@ -888,7 +888,8 @@ input_parse_buffer(struct window_pane *wp, u_char *buf, size_t len)
{ {
struct input_ctx *ictx = wp->ictx; struct input_ctx *ictx = wp->ictx;
struct screen_write_ctx *sctx = &ictx->ctx; struct screen_write_ctx *sctx = &ictx->ctx;
const struct input_transition *itr; const struct input_state *state = NULL;
const struct input_transition *itr = NULL;
size_t off = 0; size_t off = 0;
if (len == 0) if (len == 0)
@ -916,16 +917,22 @@ input_parse_buffer(struct window_pane *wp, u_char *buf, size_t len)
ictx->ch = buf[off++]; ictx->ch = buf[off++];
/* Find the transition. */ /* Find the transition. */
itr = ictx->state->transitions; if (ictx->state != state ||
while (itr->first != -1 && itr->last != -1) { itr == NULL ||
if (ictx->ch >= itr->first && ictx->ch <= itr->last) ictx->ch < itr->first ||
break; ictx->ch > itr->last) {
itr++; itr = ictx->state->transitions;
} while (itr->first != -1 && itr->last != -1) {
if (itr->first == -1 || itr->last == -1) { if (ictx->ch >= itr->first && ictx->ch <= itr->last)
/* No transition? Eh? */ break;
fatalx("no transition from state"); itr++;
}
if (itr->first == -1 || itr->last == -1) {
/* No transition? Eh? */
fatalx("no transition from state");
}
} }
state = ictx->state;
/* /*
* Any state except print stops the current collection. This is * Any state except print stops the current collection. This is

3
log.c
View File

@ -130,6 +130,9 @@ log_debug(const char *msg, ...)
{ {
va_list ap; va_list ap;
if (log_file == NULL)
return;
va_start(ap, msg); va_start(ap, msg);
log_vwrite(msg, ap); log_vwrite(msg, ap);
va_end(ap); va_end(ap);

View File

@ -1326,8 +1326,7 @@ screen_write_collect_end(struct screen_write_ctx *ctx)
} }
} }
memcpy(&gc, &ci->gc, sizeof gc); grid_view_set_cells(s->grid, s->cx, s->cy, &ci->gc, ci->data, ci->used);
grid_view_set_cells(s->grid, s->cx, s->cy, &gc, ci->data, ci->used);
screen_write_set_cursor(ctx, s->cx + ci->used, -1); screen_write_set_cursor(ctx, s->cx + ci->used, -1);
for (xx = s->cx; xx < screen_size_x(s); xx++) { for (xx = s->cx; xx < screen_size_x(s); xx++) {
@ -1351,8 +1350,7 @@ screen_write_collect_add(struct screen_write_ctx *ctx,
/* /*
* Don't need to check that the attributes and whatnot are still the * Don't need to check that the attributes and whatnot are still the
* same - input_parse will end the collection when anything that isn't * same - input_parse will end the collection when anything that isn't
* a plain character is encountered. Also nothing should make it here * a plain character is encountered.
* that isn't a single ASCII character.
*/ */
collect = 1; collect = 1;