Index: uspace/lib/clui/tinput.c
===================================================================
--- uspace/lib/clui/tinput.c	(revision 09ab0a9afc9379f1604c0fd75cac2d9287ba022c)
+++ uspace/lib/clui/tinput.c	(revision d6dc9a121d673c915860fb0070e7ac23defa2d45)
@@ -56,4 +56,5 @@
 } seek_dir_t;
 
+static void tinput_update_origin(tinput_t *);
 static void tinput_init(tinput_t *);
 static void tinput_insert_string(tinput_t *, const char *);
@@ -71,6 +72,10 @@
 static void tinput_console_set_lpos(tinput_t *ti, unsigned lpos)
 {
-	console_set_pos(ti->console, LIN_TO_COL(ti, lpos),
-	    LIN_TO_ROW(ti, lpos));
+	unsigned col = LIN_TO_COL(ti, lpos);
+	unsigned row = LIN_TO_ROW(ti, lpos);
+
+	assert(col < ti->con_cols);
+	assert(row < ti->con_rows);
+	console_set_pos(ti->console, col, row);
 }
 
@@ -163,4 +168,5 @@
 static void tinput_position_caret(tinput_t *ti)
 {
+	tinput_update_origin(ti);
 	tinput_console_set_lpos(ti, ti->text_coord + ti->pos);
 }
@@ -232,5 +238,4 @@
 
 	tinput_display_tail(ti, ti->pos - 1, 0);
-	tinput_update_origin(ti);
 	tinput_position_caret(ti);
 }
@@ -276,5 +281,4 @@
 
 	tinput_display_tail(ti, ti->pos - ilen, 0);
-	tinput_update_origin(ti);
 	tinput_position_caret(ti);
 }
