summaryrefslogtreecommitdiffstats
path: root/src/cindent.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-06-30 22:13:59 +0100
committerBram Moolenaar <Bram@vim.org>2022-06-30 22:13:59 +0100
commitfa4873ccfc10e0f278dc46f39d00136fab059b19 (patch)
tree55d4275e939188fc973d53bcf19e3d6136e6efe6 /src/cindent.c
parentcdbfc6dbab1d63aa56af316d6b13e37939e7f7a8 (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.c20
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,