patch 9.1.1221: Wrong cursor pos when leaving Insert mode just after 'autoindent'

Problem:  Wrong cursor position and '^' mark when leaving Insert mode
          just after 'autoindent' and cursor on last char of line.
Solution: Don't move cursor to NUL when it wasn't moved to the left
          (zeertzjq).

fixes: #15581
related: neovim/neovim#30165 neovim/neovim#32943
closes: #16922

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/edit.c b/src/edit.c
index 42ee125..143a4ce 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -2512,6 +2512,7 @@
 		&& end_insert_pos->lnum <= curbuf->b_ml.ml_line_count)
 	{
 	    pos_T	tpos = curwin->w_cursor;
+	    colnr_T	prev_col = end_insert_pos->col;
 
 	    curwin->w_cursor = *end_insert_pos;
 	    check_cursor_col();  // make sure it is not past the line
@@ -2527,7 +2528,7 @@
 	    }
 	    if (curwin->w_cursor.lnum != tpos.lnum)
 		curwin->w_cursor = tpos;
-	    else
+	    else if (curwin->w_cursor.col < prev_col)
 	    {
 		// reset tpos, could have been invalidated in the loop above
 		tpos = curwin->w_cursor;