diff options
-rw-r--r-- | src/nvim/mark.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/nvim/mark.c b/src/nvim/mark.c index ce44149ffa..6ac4b1de9c 100644 --- a/src/nvim/mark.c +++ b/src/nvim/mark.c @@ -1117,10 +1117,17 @@ static void cleanup_jumplist(void) && curwin->w_jumplist[i].fmark.mark.lnum == curwin->w_jumplist[from].fmark.mark.lnum) break; - if (i >= curwin->w_jumplistlen) /* no duplicate */ - curwin->w_jumplist[to++] = curwin->w_jumplist[from]; - else + if (i >= curwin->w_jumplistlen) { // no duplicate + if (to != from) { + // Not using curwin->w_jumplist[to++] = curwin->w_jumplist[from] because + // this way valgrind complains about overlapping source and destination + // in memcpy() call. (clang-3.6.0, debug build with -DEXITFREE). + curwin->w_jumplist[to] = curwin->w_jumplist[from]; + } + to++; + } else { xfree(curwin->w_jumplist[from].fname); + } } if (curwin->w_jumplistidx == curwin->w_jumplistlen) curwin->w_jumplistidx = to; |