aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/sign.c
diff options
context:
space:
mode:
authorAndrej Zieger <jerdna-regeiz@users.noreply.github.com>2019-06-01 12:03:59 +0200
committerJustin M. Keyes <justinkz@gmail.com>2019-06-01 12:03:59 +0200
commit95ece7d046ae3517c60e497be434db88d28891b3 (patch)
tree7a1db489c5bd35131aa25ff027fee74c4d7935ee /src/nvim/sign.c
parentef33500e178e66880795eeaec21d5f6a530c52d5 (diff)
downloadrneovim-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.c6
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) {