On Thu, 06 Feb 2014 12:38:40 +0100, Aleksandr Rybalko <r...@freebsd.org> wrote:

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)

Was teken... already taken?


Ronald.


+{
+       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);
 }
_______________________________________________
svn-src-...@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to