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.
diff --git a/src/change.c b/src/change.c
index b928786..761e764 100644
--- a/src/change.c
+++ b/src/change.c
@@ -325,15 +325,17 @@
  * listener_remove() function
  */
     void
-f_listener_remove(typval_T *argvars, typval_T *rettv UNUSED)
+f_listener_remove(typval_T *argvars, typval_T *rettv)
 {
     listener_T	*lnr;
     listener_T	*next;
-    listener_T	*prev = NULL;
+    listener_T	*prev;
     int		id = tv_get_number(argvars);
     buf_T	*buf;
 
     for (buf = firstbuf; buf != NULL; buf = buf->b_next)
+    {
+	prev = NULL;
 	for (lnr = buf->b_listener; lnr != NULL; lnr = next)
 	{
 	    next = lnr->lr_next;
@@ -345,9 +347,12 @@
 		    buf->b_listener = lnr->lr_next;
 		free_callback(&lnr->lr_callback);
 		vim_free(lnr);
+		rettv->vval.v_number = 1;
+		return;
 	    }
 	    prev = lnr;
 	}
+    }
 }
 
 /*