aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/change.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-03-04 10:25:18 +0800
committerzeertzjq <zeertzjq@outlook.com>2023-03-04 13:53:09 +0800
commit0a897f89c52b92cb518dae1c92de22ca1d170d2a (patch)
tree21a76a06b6a41eb99b23ff0fc41906c3e6c55226 /src/nvim/change.c
parent446c353a507834a3cbe9007b06e7e0c2c46b5ac7 (diff)
downloadrneovim-0a897f89c52b92cb518dae1c92de22ca1d170d2a.tar.gz
rneovim-0a897f89c52b92cb518dae1c92de22ca1d170d2a.tar.bz2
rneovim-0a897f89c52b92cb518dae1c92de22ca1d170d2a.zip
vim-patch:partial:9.0.0013: reproducing memory access errors can be difficult
Problem: Reproducing memory access errors can be difficult. Solution: When testing, copy each line to allocated memory, so that valgrind can detect accessing memory before and/or after it. Fix uncovered problems. https://github.com/vim/vim/commit/fa4873ccfc10e0f278dc46f39d00136fab059b19 Since test_override() is N/A, enable ml_get_alloc_lines when ASAN is enabled instead, so it also applies to functional tests. Use xstrdup() to copy the line as ml_line_len looks hard to port. Squash the test changes from patch 9.0.0016. Co-authored-by: Bram Moolenaar <Bram@vim.org>
Diffstat (limited to 'src/nvim/change.c')
-rw-r--r--src/nvim/change.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/nvim/change.c b/src/nvim/change.c
index 1bd7ea3a5a..7c8f62015d 100644
--- a/src/nvim/change.c
+++ b/src/nvim/change.c
@@ -1162,12 +1162,16 @@ int open_line(int dir, int flags, int second_line_indent, bool *did_do_comment)
if (p[0] == '/' && p[-1] == '*') {
// End of C comment, indent should line up
// with the line containing the start of
- // the comment
+ // the comment.
curwin->w_cursor.col = (colnr_T)(p - ptr);
if ((pos = findmatch(NULL, NUL)) != NULL) {
curwin->w_cursor.lnum = pos->lnum;
newindent = get_indent();
+ break;
}
+ // this may make "ptr" invalid, get it again
+ ptr = ml_get(curwin->w_cursor.lnum);
+ p = ptr + curwin->w_cursor.col;
}
}
}