aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/charset.c5
-rw-r--r--src/nvim/window.c6
2 files changed, 10 insertions, 1 deletions
diff --git a/src/nvim/charset.c b/src/nvim/charset.c
index 9e240fd38b..f31cef5886 100644
--- a/src/nvim/charset.c
+++ b/src/nvim/charset.c
@@ -1160,6 +1160,11 @@ void getvcol(win_T *wp, pos_T *pos, colnr_T *start, colnr_T *cursor,
// continue until the NUL
posptr = NULL;
} else {
+ // Special check for an empty line, which can happen on exit, when
+ // ml_get_buf() always returns an empty string.
+ if (*ptr == NUL) {
+ pos->col = 0;
+ }
posptr = ptr + pos->col;
}
diff --git a/src/nvim/window.c b/src/nvim/window.c
index db6c0f9048..dc0ce03794 100644
--- a/src/nvim/window.c
+++ b/src/nvim/window.c
@@ -4803,7 +4803,11 @@ void win_new_height(win_T *wp, int height)
wp->w_height = height;
wp->w_skipcol = 0;
- scroll_to_fraction(wp, prev_height);
+ // There is no point in adjusting the scroll position when exiting. Some
+ // values might be invalid.
+ if (!exiting) {
+ scroll_to_fraction(wp, prev_height);
+ }
}
void scroll_to_fraction(win_T *wp, int prev_height)