From fa4873ccfc10e0f278dc46f39d00136fab059b19 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 30 Jun 2022 22:13:59 +0100 Subject: 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. --- src/cindent.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'src/cindent.c') 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, -- cgit v1.2.3