diff options
author | Andrej Zieger <jerdna-regeiz@users.noreply.github.com> | 2019-06-01 12:03:59 +0200 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2019-06-01 12:03:59 +0200 |
commit | 95ece7d046ae3517c60e497be434db88d28891b3 (patch) | |
tree | 7a1db489c5bd35131aa25ff027fee74c4d7935ee /src/nvim/sign.c | |
parent | ef33500e178e66880795eeaec21d5f6a530c52d5 (diff) | |
download | rneovim-95ece7d046ae3517c60e497be434db88d28891b3.tar.gz rneovim-95ece7d046ae3517c60e497be434db88d28891b3.tar.bz2 rneovim-95ece7d046ae3517c60e497be434db88d28891b3.zip |
signs: fix crash in buf_addsign #10091
buf_signcols sorting breaks signlist structure.
Remove sorting in buf_signcols, because signlist is already kept
sorted and it did not correctly update the double linked list.
Fixes #10078
Diffstat (limited to 'src/nvim/sign.c')
-rw-r--r-- | src/nvim/sign.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/nvim/sign.c b/src/nvim/sign.c index ac26fd0137..8c85fbdaa7 100644 --- a/src/nvim/sign.c +++ b/src/nvim/sign.c @@ -231,9 +231,11 @@ static void insert_sign_by_lnum_prio( { signlist_T *sign; - // keep signs sorted by lnum and by priority: insert new sign at + // keep signs sorted by lnum, priority and id: insert new sign at // the proper position in the list for this lnum. - while (prev != NULL && prev->lnum == lnum && prev->priority <= prio) { + while (prev != NULL && prev->lnum == lnum + && (prev->priority < prio + || (prev->priority == prio && prev->id <= id))) { prev = prev->prev; } if (prev == NULL) { |