[dev] [st PATCH] Do not save cursor in tresize.

From: noname <noname_AT_inventati.org>
Date: Tue, 29 Apr 2014 02:35:22 +0400

This patch fixes the bug introduced in
8f11e1cd034ff28ca47bb4955505db7fa8016ba8

To reproduce the bug:
1. Save cursor: printf '\e[s'
2. Load cursor: printf '\e[u'
3. Resize st window.
4. Load cursor again: printf '\e[u'
---
 st.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/st.c b/st.c
index 9079834..1c70761 100644
--- a/st.c
+++ b/st.c
_AT_@ -2639,6 +2639,7 @@ tresize(int col, int row) {
 	int slide = term.c.y - row + 1;
 	bool *bp;
 	Line *orig;
+	TCursor c;
 
 	if(col < 1 || row < 1)
 		return 0;
_AT_@ -2700,6 +2701,7 @@ tresize(int col, int row) {
 	tmoveto(term.c.x, term.c.y);
 	/* Clearing both screens */
 	orig = term.line;
+	c = term.c;
 	do {
 		if(mincol < col && 0 < minrow) {
 			tclearregion(mincol, 0, col - 1, minrow - 1);
_AT_@ -2707,10 +2709,10 @@ tresize(int col, int row) {
 		if(0 < col && minrow < row) {
 			tclearregion(0, minrow, col - 1, row - 1);
 		}
-		tcursor(CURSOR_SAVE);
 		tswapscreen();
 		tcursor(CURSOR_LOAD);
 	} while(orig != term.line);
+	term.c = c;
 
 	return (slide > 0);
 }
-- 
1.8.4
Received on Tue Apr 29 2014 - 00:35:22 CEST

This archive was generated by hypermail 2.3.0 : Tue Apr 29 2014 - 00:48:03 CEST