Skip to content

Commit 7b73f91

Browse files
committed
patch 8.1.1675: listener list not correctly updated on listener_remove()
Problem: Listener list not correctly updated on listener_remove(). Solution: Only set "prev" when not removing a listener. Return one if the listener was found and removed.
1 parent 4e63f94 commit 7b73f91

2 files changed

Lines changed: 9 additions & 2 deletions

File tree

src/change.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -325,15 +325,17 @@ f_listener_flush(typval_T *argvars, typval_T *rettv UNUSED)
325325
* listener_remove() function
326326
*/
327327
void
328-
f_listener_remove(typval_T *argvars, typval_T *rettv UNUSED)
328+
f_listener_remove(typval_T *argvars, typval_T *rettv)
329329
{
330330
listener_T *lnr;
331331
listener_T *next;
332-
listener_T *prev = NULL;
332+
listener_T *prev;
333333
int id = tv_get_number(argvars);
334334
buf_T *buf;
335335

336336
for (buf = firstbuf; buf != NULL; buf = buf->b_next)
337+
{
338+
prev = NULL;
337339
for (lnr = buf->b_listener; lnr != NULL; lnr = next)
338340
{
339341
next = lnr->lr_next;
@@ -345,9 +347,12 @@ f_listener_remove(typval_T *argvars, typval_T *rettv UNUSED)
345347
buf->b_listener = lnr->lr_next;
346348
free_callback(&lnr->lr_callback);
347349
vim_free(lnr);
350+
rettv->vval.v_number = 1;
351+
return;
348352
}
349353
prev = lnr;
350354
}
355+
}
351356
}
352357

353358
/*

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -777,6 +777,8 @@ static char *(features[]) =
777777

778778
static int included_patches[] =
779779
{ /* Add new patch number below this line */
780+
/**/
781+
1675,
780782
/**/
781783
1674,
782784
/**/

0 commit comments

Comments
 (0)