svn commit: r261547 - head/sys/teken
Aleksandr Rybalko
ray at FreeBSD.org
Thu Feb 6 11:38:40 UTC 2014
Author: ray
Date: Thu Feb 6 11:38:39 2014
New Revision: 261547
URL: http://svnweb.freebsd.org/changeset/base/261547
Log:
Fix crash on load of bigger font. It reduce width and height of terminal, but
current cursor position stay bigger that terminal window size, so next input
triggers assert.
Reported by: emaste
Sponsored by: The FreeBSD Foundation
Modified:
head/sys/teken/teken.c
Modified: head/sys/teken/teken.c
==============================================================================
--- head/sys/teken/teken.c Thu Feb 6 10:52:51 2014 (r261546)
+++ head/sys/teken/teken.c Thu Feb 6 11:38:39 2014 (r261547)
@@ -338,10 +338,26 @@ teken_get_winsize(teken_t *t)
return (&t->t_winsize);
}
+static void
+taken_trim_cursor_pos(teken_t *t, const teken_pos_t *new)
+{
+ const teken_pos_t *cur;
+
+ cur = &t->t_winsize;
+
+ if (cur->tp_row < new->tp_row || cur->tp_col < new->tp_col)
+ return;
+ if (t->t_cursor.tp_row >= new->tp_row)
+ t->t_cursor.tp_row = new->tp_row - 1;
+ if (t->t_cursor.tp_col >= new->tp_col)
+ t->t_cursor.tp_col = new->tp_col - 1;
+}
+
void
teken_set_winsize(teken_t *t, const teken_pos_t *p)
{
+ taken_trim_cursor_pos(t, p);
t->t_winsize = *p;
teken_subr_do_reset(t);
}
@@ -350,6 +366,7 @@ void
teken_set_winsize_noreset(teken_t *t, const teken_pos_t *p)
{
+ taken_trim_cursor_pos(t, p);
t->t_winsize = *p;
teken_subr_do_resize(t);
}
More information about the svn-src-all
mailing list