summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-08-11 13:36:56 +0200
committerBram Moolenaar <Bram@vim.org>2018-08-11 13:36:56 +0200
commit90f1e2b7bcf56112e1535b693acf131727179a6e (patch)
tree9f8b57c0d18b33d016152550dfeec46fc9de8551
parentee8415bc5998792fab6f4dcf289d027856e05b89 (diff)
patch 8.1.0267: no good check if restoring quickfix list workedv8.1.0267
Problem: No good check if restoring quickfix list worked. Solution: Let qf_restore_list() return OK/FAIL. (Yegappan Lakshmanan)
-rw-r--r--src/quickfix.c23
-rw-r--r--src/version.c2
2 files changed, 17 insertions, 8 deletions
diff --git a/src/quickfix.c b/src/quickfix.c
index 244c7a4faa..ac40b24dd3 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -4338,8 +4338,10 @@ qf_id2nr(qf_info_T *qi, int_u qfid)
* If the current list is not "save_qfid" and we can find the list with that ID
* then make it the current list.
* This is used when autocommands may have changed the current list.
+ * Returns OK if successfully restored the list. Returns FAIL if the list with
+ * the specified identifier (save_qfid) is not found in the stack.
*/
- static void
+ static int
qf_restore_list(qf_info_T *qi, int_u save_qfid)
{
int curlist;
@@ -4347,10 +4349,12 @@ qf_restore_list(qf_info_T *qi, int_u save_qfid)
if (qi->qf_lists[qi->qf_curlist].qf_id != save_qfid)
{
curlist = qf_id2nr(qi, save_qfid);
- if (curlist >= 0)
- qi->qf_curlist = curlist;
- // else: what if the list can't be found?
+ if (curlist < 0)
+ // list is not present
+ return FAIL;
+ qi->qf_curlist = curlist;
}
+ return OK;
}
/*
@@ -4359,9 +4363,10 @@ qf_restore_list(qf_info_T *qi, int_u save_qfid)
static void
qf_jump_first(qf_info_T *qi, int_u save_qfid, int forceit)
{
- qf_restore_list(qi, save_qfid);
+ if (qf_restore_list(qi, save_qfid) == FAIL)
+ return;
- // Autocommands might have cleared the list, check for it
+ // Autocommands might have cleared the list, check for that.
if (!qf_list_empty(qi, qi->qf_curlist))
qf_jump(qi, 0, 0, forceit);
}
@@ -5025,7 +5030,8 @@ vgr_qflist_valid(
}
}
- qf_restore_list(qi, qfid);
+ if (qf_restore_list(qi, qfid) == FAIL)
+ return FALSE;
return TRUE;
}
@@ -5371,7 +5377,8 @@ ex_vimgrep(exarg_T *eap)
if (!qflist_valid(wp, save_qfid))
goto theend;
- qf_restore_list(qi, save_qfid);
+ if (qf_restore_list(qi, save_qfid) == FAIL)
+ goto theend;
/* Jump to first match. */
if (!qf_list_empty(qi, qi->qf_curlist))
diff --git a/src/version.c b/src/version.c
index 61dfc5f76a..2e9ecf7bd8 100644
--- a/src/version.c
+++ b/src/version.c
@@ -795,6 +795,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 267,
+/**/
266,
/**/
265,