updated for version 7.4.378
Problem:    Title of quickfist list is not kept for setqflist(list, 'r').
Solution:   Keep the title.  Add a test. (Lcd)
diff --git a/src/quickfix.c b/src/quickfix.c
index 799421e..fc3a144 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -107,6 +107,7 @@
 };
 
 static int	qf_init_ext __ARGS((qf_info_T *qi, char_u *efile, buf_T *buf, typval_T *tv, char_u *errorformat, int newlist, linenr_T lnumfirst, linenr_T lnumlast, char_u *qf_title));
+static void	qf_store_title __ARGS((qf_info_T *qi, char_u *title));
 static void	qf_new_list __ARGS((qf_info_T *qi, char_u *qf_title));
 static void	ll_free_all __ARGS((qf_info_T **pqi));
 static int	qf_add_entry __ARGS((qf_info_T *qi, qfline_T **prevp, char_u *dir, char_u *fname, int bufnum, char_u *mesg, long lnum, int col, int vis_col, char_u *pattern, int nr, int type, int valid));
@@ -126,7 +127,7 @@
 static win_T	*qf_find_win __ARGS((qf_info_T *qi));
 static buf_T	*qf_find_buf __ARGS((qf_info_T *qi));
 static void	qf_update_buffer __ARGS((qf_info_T *qi));
-static void	qf_set_title __ARGS((qf_info_T *qi));
+static void	qf_set_title_var __ARGS((qf_info_T *qi));
 static void	qf_fill_buffer __ARGS((qf_info_T *qi));
 #endif
 static char_u	*get_mef_name __ARGS((void));
@@ -884,6 +885,21 @@
     return retval;
 }
 
+    static void
+qf_store_title(qi, title)
+    qf_info_T	*qi;
+    char_u	*title;
+{
+    if (title != NULL)
+    {
+	char_u *p = alloc((int)STRLEN(title) + 2);
+
+	qi->qf_lists[qi->qf_curlist].qf_title = p;
+	if (p != NULL)
+	    sprintf((char *)p, ":%s", (char *)title);
+    }
+}
+
 /*
  * Prepare for adding a new quickfix list.
  */
@@ -895,7 +911,7 @@
     int		i;
 
     /*
-     * If the current entry is not the last entry, delete entries below
+     * If the current entry is not the last entry, delete entries beyond
      * the current entry.  This makes it possible to browse in a tree-like
      * way with ":grep'.
      */
@@ -916,14 +932,7 @@
     else
 	qi->qf_curlist = qi->qf_listcount++;
     vim_memset(&qi->qf_lists[qi->qf_curlist], 0, (size_t)(sizeof(qf_list_T)));
-    if (qf_title != NULL)
-    {
-	char_u *p = alloc((int)STRLEN(qf_title) + 2);
-
-	qi->qf_lists[qi->qf_curlist].qf_title = p;
-	if (p != NULL)
-	    sprintf((char *)p, ":%s", (char *)qf_title);
-    }
+    qf_store_title(qi, qf_title);
 }
 
 /*
@@ -2444,7 +2453,7 @@
     qf_fill_buffer(qi);
 
     if (qi->qf_lists[qi->qf_curlist].qf_title != NULL)
-	qf_set_title(qi);
+	qf_set_title_var(qi);
 
     curwin->w_cursor.lnum = qi->qf_lists[qi->qf_curlist].qf_index;
     curwin->w_cursor.col = 0;
@@ -2599,7 +2608,7 @@
 	{
 	    curwin_save = curwin;
 	    curwin = win;
-	    qf_set_title(qi);
+	    qf_set_title_var(qi);
 	    curwin = curwin_save;
 
 	}
@@ -2612,7 +2621,7 @@
 }
 
     static void
-qf_set_title(qi)
+qf_set_title_var(qi)
     qf_info_T	*qi;
 {
     set_internal_string_var((char_u *)"w:quickfix_title",
@@ -3845,7 +3854,10 @@
 	     prevp->qf_next != prevp; prevp = prevp->qf_next)
 	    ;
     else if (action == 'r')
+    {
 	qf_free(qi, qi->qf_curlist);
+	qf_store_title(qi, title);
+    }
 
     for (li = list->lv_first; li != NULL; li = li->li_next)
     {