Mercurial > vim
diff src/cindent.c @ 29340:fba9e366ced4 v9.0.0013
patch 9.0.0013: reproducing memory access errors can be difficult
Commit: https://github.com/vim/vim/commit/fa4873ccfc10e0f278dc46f39d00136fab059b19
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Jun 30 22:13:59 2022 +0100
patch 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.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 30 Jun 2022 23:15:03 +0200 |
parents | 6cdf55afaae9 |
children | d3058719eff5 |
line wrap: on
line diff
--- a/src/cindent.c +++ b/src/cindent.c @@ -2794,8 +2794,6 @@ get_c_indent(void) break; } - l = ml_get_curline(); - // If we're in a comment or raw string now, skip to // the start of it. trypos = ind_find_start_CORS(NULL); @@ -2806,6 +2804,8 @@ get_c_indent(void) continue; } + l = ml_get_curline(); + // Skip preprocessor directives and blank lines. if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum, &amount)) @@ -2905,8 +2905,6 @@ get_c_indent(void) < ourscope - FIND_NAMESPACE_LIM) break; - l = ml_get_curline(); - // If we're in a comment or raw string now, skip // to the start of it. trypos = ind_find_start_CORS(NULL); @@ -2917,6 +2915,8 @@ get_c_indent(void) continue; } + l = ml_get_curline(); + // Skip preprocessor directives and blank lines. if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum, &amount)) @@ -3196,11 +3196,16 @@ get_c_indent(void) && trypos->col < tryposBrace->col))) trypos = NULL; + l = ml_get_curline(); + // If we are looking for ',', we also look for matching // braces. - if (trypos == NULL && terminated == ',' - && find_last_paren(l, '{', '}')) - trypos = find_start_brace(); + if (trypos == NULL && terminated == ',') + { + if (find_last_paren(l, '{', '}')) + trypos = find_start_brace(); + l = ml_get_curline(); + } if (trypos != NULL) { @@ -3233,6 +3238,7 @@ get_c_indent(void) --curwin->w_cursor.lnum; curwin->w_cursor.col = 0; } + l = ml_get_curline(); } // Get indent and pointer to text for current line,