aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-03-22 15:02:19 +0100
committerJustin M. Keyes <justinkz@gmail.com>2017-03-22 18:43:01 +0100
commitc398402f1225e8050856260cbc6ae929ff2f5c31 (patch)
tree1970d355f0d58dfbedd653c267070c28ee0c5bef
parent830b31683e9958130a64b9dec990f42b58efc0a7 (diff)
downloadrneovim-c398402f1225e8050856260cbc6ae929ff2f5c31.tar.gz
rneovim-c398402f1225e8050856260cbc6ae929ff2f5c31.tar.bz2
rneovim-c398402f1225e8050856260cbc6ae929ff2f5c31.zip
vim-patch:8.0.0307
Problem: Asan detects a memory error when EXITFREE is defined. (Dominique Pelle) Solution: In getvcol() check for ml_get_buf() returning an empty string. Also skip adjusting the scroll position. Set "exiting" in mch_exit() for all systems. https://github.com/vim/vim/commit/955f198fc546cc30a34361932d3f454a61df0efa
-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)