patch 8.0.1496: clearing a pointer takes two lines
Problem: Clearing a pointer takes two lines.
Solution: Add VIM_CLEAR() and replace vim_clear(). (Hirohito Higashi,
closes #2629)
diff --git a/src/memline.c b/src/memline.c
index 07721ee..7ea94ab 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -535,8 +535,7 @@
idx = 0; /* start with first index in block 1 */
error = 0;
buf->b_ml.ml_stack_top = 0;
- vim_free(buf->b_ml.ml_stack);
- buf->b_ml.ml_stack = NULL;
+ VIM_CLEAR(buf->b_ml.ml_stack);
buf->b_ml.ml_stack_size = 0; /* no stack yet */
for ( ; !got_int; line_breakcheck())
@@ -852,8 +851,7 @@
vim_free(buf->b_ml.ml_line_ptr);
vim_free(buf->b_ml.ml_stack);
#ifdef FEAT_BYTEOFF
- vim_free(buf->b_ml.ml_chunksize);
- buf->b_ml.ml_chunksize = NULL;
+ VIM_CLEAR(buf->b_ml.ml_chunksize);
#endif
buf->b_ml.ml_mfp = NULL;
@@ -4197,8 +4195,7 @@
break;
if ((n = (int)STRLEN(fname)) == 0) /* safety check */
{
- vim_free(fname);
- fname = NULL;
+ VIM_CLEAR(fname);
break;
}
#if defined(UNIX)
@@ -4578,8 +4575,7 @@
if (fname[n - 2] == 'a') /* ".saa": tried enough, give up */
{
EMSG(_("E326: Too many swap files found"));
- vim_free(fname);
- fname = NULL;
+ VIM_CLEAR(fname);
break;
}
--fname[n - 2]; /* ".svz", ".suz", etc. */