Merge branch 'obsd-master'

This commit is contained in:
Thomas Adam 2015-08-25 18:01:07 +01:00
commit ce20572ace

11
input.c
View File

@ -1199,6 +1199,7 @@ input_csi_dispatch(struct input_ctx *ictx)
struct screen *s = sctx->s; struct screen *s = sctx->s;
struct input_table_entry *entry; struct input_table_entry *entry;
int n, m; int n, m;
u_int cx;
if (ictx->flags & INPUT_DISCARD) if (ictx->flags & INPUT_DISCARD)
return (0); return (0);
@ -1217,12 +1218,16 @@ input_csi_dispatch(struct input_ctx *ictx)
switch (entry->type) { switch (entry->type) {
case INPUT_CSI_CBT: case INPUT_CSI_CBT:
/* Find the previous tab point, n times. */ /* Find the previous tab point, n times. */
cx = s->cx;
if (cx > screen_size_x(s) - 1)
cx = screen_size_x(s) - 1;
n = input_get(ictx, 0, 1, 1); n = input_get(ictx, 0, 1, 1);
while (s->cx > 0 && n-- > 0) { while (cx > 0 && n-- > 0) {
do do
s->cx--; cx--;
while (s->cx > 0 && !bit_test(s->tabs, s->cx)); while (cx > 0 && !bit_test(s->tabs, cx));
} }
s->cx = cx;
break; break;
case INPUT_CSI_CUB: case INPUT_CSI_CUB:
screen_write_cursorleft(sctx, input_get(ictx, 0, 1, 1)); screen_write_cursorleft(sctx, input_get(ictx, 0, 1, 1));