Mercurial > vim
diff src/mark.c @ 9313:c0760b25f31d v7.4.1939
commit https://github.com/vim/vim/commit/28607ba2b82668503f8406bc13690d59af46deb3
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jun 15 21:44:51 2016 +0200
patch 7.4.1939
Problem: Memory access error when reading viminfo. (Dominique Pelle)
Solution: Correct index in jumplist when at the end.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 15 Jun 2016 21:45:05 +0200 |
parents | 7a6f64de57d5 |
children | f2e534fdbe65 |
line wrap: on
line diff
--- a/src/mark.c +++ b/src/mark.c @@ -1525,6 +1525,9 @@ handle_viminfo_mark(garray_T *values, in if (idx < 0 && curwin->w_jumplistlen < JUMPLISTSIZE) /* insert as the oldest entry */ idx = 0; + else if (idx == 0 && curwin->w_jumplistlen == JUMPLISTSIZE) + /* no space to insert as the oldest entry */ + idx = -1; } else if (curwin->w_jumplistlen < JUMPLISTSIZE) /* insert as oldest entry */ @@ -1537,6 +1540,7 @@ handle_viminfo_mark(garray_T *values, in if (curwin->w_jumplistlen == JUMPLISTSIZE) { /* Drop the oldest entry. */ + --idx; vim_free(curwin->w_jumplist[0].fname); for (i = 0; i < idx; ++i) curwin->w_jumplist[i] = curwin->w_jumplist[i + 1];