diff --git a/src/quickfix.c b/src/quickfix.c
index 084d82e..3889a95 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -1163,8 +1163,8 @@
     qffields_T	    fields;
 #ifdef FEAT_WINDOWS
     qfline_T	    *old_last = NULL;
-    int		    adding = FALSE;
 #endif
+    int		    adding = FALSE;
     static efm_T    *fmt_first = NULL;
     char_u	    *efm;
     static char_u   *last_efm = NULL;
@@ -1199,14 +1199,15 @@
     if (newlist || qi->qf_curlist == qi->qf_listcount)
 	/* make place for a new list */
 	qf_new_list(qi, qf_title);
-#ifdef FEAT_WINDOWS
-    else if (qi->qf_lists[qi->qf_curlist].qf_count > 0)
+    else
     {
 	/* Adding to existing list, use last entry. */
 	adding = TRUE;
-	old_last = qi->qf_lists[qi->qf_curlist].qf_last;
-    }
+#ifdef FEAT_WINDOWS
+	if (qi->qf_lists[qi->qf_curlist].qf_count > 0)
+	    old_last = qi->qf_lists[qi->qf_curlist].qf_last;
 #endif
+    }
 
     /* Use the local value of 'errorformat' if it's set. */
     if (errorformat == p_efm && tv == NULL && *buf->b_p_efm != NUL)
@@ -4785,6 +4786,8 @@
 	    (void)get_errorlist(wp, qf_idx, l);
 	    dict_add_list(retdict, "items", l);
 	}
+	else
+	    status = FAIL;
     }
 
     if ((status == OK) && (flags & QF_GETLIST_CONTEXT))
@@ -4795,9 +4798,12 @@
 	    if (di != NULL)
 	    {
 		copy_tv(qi->qf_lists[qf_idx].qf_ctx, &di->di_tv);
-		if (dict_add(retdict, di) == FAIL)
+		status = dict_add(retdict, di);
+		if (status == FAIL)
 		    dictitem_free(di);
 	    }
+	    else
+		status = FAIL;
 	}
 	else
 	    status = dict_add_nr_str(retdict, "context", 0L, (char_u *)"");
@@ -5020,6 +5026,7 @@
 	if (ctx != NULL)
 	    copy_tv(&di->di_tv, ctx);
 	qi->qf_lists[qf_idx].qf_ctx = ctx;
+	retval = OK;
     }
 
     return retval;
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index 755ea74..c595458 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -1720,7 +1720,8 @@
     Xopen
     wincmd p
     call g:Xsetlist([{'filename':'foo', 'lnum':27}])
-    call g:Xsetlist([], 'a', {'title' : 'Sample'})
+    let s = g:Xsetlist([], 'a', {'title' : 'Sample'})
+    call assert_equal(0, s)
     let d = g:Xgetlist({"title":1})
     call assert_equal('Sample', d.title)
 
@@ -1774,7 +1775,8 @@
     endif
 
     " Context related tests
-    call g:Xsetlist([], 'a', {'context':[1,2,3]})
+    let s = g:Xsetlist([], 'a', {'context':[1,2,3]})
+    call assert_equal(0, s)
     call test_garbagecollect_now()
     let d = g:Xgetlist({'context':1})
     call assert_equal([1,2,3], d.context)
@@ -1839,8 +1841,9 @@
     " Test for setting/getting items
     Xexpr ""
     let qfprev = g:Xgetlist({'nr':0})
-    call g:Xsetlist([], ' ', {'title':'Green',
+    let s = g:Xsetlist([], ' ', {'title':'Green',
 		\ 'items' : [{'filename':'F1', 'lnum':10}]})
+    call assert_equal(0, s)
     let qfcur = g:Xgetlist({'nr':0})
     call assert_true(qfcur.nr == qfprev.nr + 1)
     let l = g:Xgetlist({'items':1})
diff --git a/src/version.c b/src/version.c
index e659f8c..9f2515d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    687,
+/**/
     686,
 /**/
     685,
