diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-06-30 22:13:59 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-06-30 22:13:59 +0100 |
commit | fa4873ccfc10e0f278dc46f39d00136fab059b19 (patch) | |
tree | 55d4275e939188fc973d53bcf19e3d6136e6efe6 /src/cindent.c | |
parent | cdbfc6dbab1d63aa56af316d6b13e37939e7f7a8 (diff) |
patch 9.0.0013: reproducing memory access errors can be difficultv9.0.0013
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.
Diffstat (limited to 'src/cindent.c')
-rw-r--r-- | src/cindent.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/cindent.c b/src/cindent.c index 27e8a7b276..48ddca5320 100644 --- 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, |