diff --git a/src/quickfix.c b/src/quickfix.c
index 8e74521..b2dabaa 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -3421,7 +3421,7 @@
 
 /*
  * Find a window displaying the quickfix/location list 'qi'
- * Searches in only the windows opened in the current tab.
+ * Only searches in the current tabpage.
  */
     static win_T *
 qf_find_win(qf_info_T *qi)
@@ -3430,9 +3430,8 @@
 
     FOR_ALL_WINDOWS(win)
 	if (is_qf_win(win, qi))
-	    break;
-
-    return win;
+	    return win;
+    return NULL;
 }
 
 /*
@@ -4945,6 +4944,24 @@
 }
 
 /*
+ * Return the quickfix/location list window identifier in the current tabpage.
+ */
+    static int
+qf_winid(qf_info_T *qi)
+{
+    win_T	*win;
+
+    /* The quickfix window can be opened even if the quickfix list is not set
+     * using ":copen". This is not true for location lists.  */
+    if (qi == NULL)
+	return 0;
+    win = qf_find_win(qi);
+    if (win != NULL)
+	return win->w_id;
+    return 0;
+}
+
+/*
  * Return quickfix/location list details (title) as a
  * dictionary. 'what' contains the details to return. If 'list_idx' is -1,
  * then current list is used. Otherwise the specified list is used.
@@ -5053,7 +5070,7 @@
 	if ((status == OK) && (flags & QF_GETLIST_NR))
 	    status = dict_add_nr_str(retdict, "nr", 0L, NULL);
 	if ((status == OK) && (flags & QF_GETLIST_WINID))
-	    status = dict_add_nr_str(retdict, "winid", 0L, NULL);
+	    status = dict_add_nr_str(retdict, "winid", qf_winid(qi), NULL);
 	if ((status == OK) && (flags & QF_GETLIST_CONTEXT))
 	    status = dict_add_nr_str(retdict, "context", 0L, (char_u *)"");
 	if ((status == OK) && (flags & QF_GETLIST_ID))
@@ -5079,15 +5096,7 @@
     if ((status == OK) && (flags & QF_GETLIST_NR))
 	status = dict_add_nr_str(retdict, "nr", qf_idx + 1, NULL);
     if ((status == OK) && (flags & QF_GETLIST_WINID))
-    {
-	win_T	*win;
-	int	win_id = 0;
-
-	win = qf_find_win(qi);
-	if (win != NULL)
-	    win_id = win->w_id;
-	status = dict_add_nr_str(retdict, "winid", win_id, NULL);
-    }
+	status = dict_add_nr_str(retdict, "winid", qf_winid(qi), NULL);
     if ((status == OK) && (flags & QF_GETLIST_ITEMS))
     {
 	list_T	*l = list_alloc();
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index fb78f69..71aa7d5 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -2906,6 +2906,12 @@
   call assert_equal(0, g:Xgetlist({'changedtick' : 0}).changedtick)
   call assert_equal({'context' : '', 'id' : 0, 'idx' : 0, 'items' : [], 'nr' : 0, 'size' : 0, 'title' : '', 'winid' : 0, 'changedtick': 0}, g:Xgetlist({'all' : 0}))
 
+  " Quickfix window with empty stack
+  silent! Xopen
+  let qfwinid = (a:cchar == 'c') ? win_getid() : 0
+  call assert_equal(qfwinid, g:Xgetlist({'winid' : 0}).winid)
+  Xclose
+
   " Empty quickfix list
   Xexpr ""
   call assert_equal('', g:Xgetlist({'context' : 0}).context)
diff --git a/src/version.c b/src/version.c
index 6362b55..2a3460e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1432,
+/**/
     1431,
 /**/
     1430,
