patch 8.1.0455: checking for empty quickfix stack is not consistent
Problem: Checking for empty quickfix stack is not consistent.
Solution: Use qf_stack_empty(). (Yegappan Lakshmanan)
diff --git a/src/quickfix.c b/src/quickfix.c
index 19363d3..30f9bde 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -1499,6 +1499,15 @@
}
/*
+ * Returns TRUE if the specified quickfix/location stack is empty
+ */
+ static int
+qf_stack_empty(qf_info_T *qi)
+{
+ return qi == NULL || qi->qf_listcount <= 0;
+}
+
+/*
* Returns TRUE if the specified quickfix/location list is empty.
*/
static int
@@ -3220,8 +3229,7 @@
if (qi == NULL)
qi = &ql_info;
- if (qi->qf_curlist >= qi->qf_listcount
- || qf_list_empty(qi, qi->qf_curlist))
+ if (qf_stack_empty(qi) || qf_list_empty(qi, qi->qf_curlist))
{
EMSG(_(e_quickfix));
return;
@@ -3412,8 +3420,7 @@
}
}
- if (qi->qf_curlist >= qi->qf_listcount
- || qf_list_empty(qi, qi->qf_curlist))
+ if (qf_stack_empty(qi) || qf_list_empty(qi, qi->qf_curlist))
{
EMSG(_(e_quickfix));
return;
@@ -3601,8 +3608,7 @@
if (is_loclist_cmd(eap->cmdidx))
qi = GET_LOC_LIST(curwin);
- if (qi == NULL || (qi->qf_listcount == 0
- && qf_list_empty(qi, qi->qf_curlist)))
+ if (qf_stack_empty(qi) || qf_list_empty(qi, qi->qf_curlist))
MSG(_("No entries"));
else
for (i = 0; i < qi->qf_listcount; ++i)
@@ -3830,9 +3836,9 @@
* close the window. If a quickfix window is not open, then open
* it if we have errors; otherwise, leave it closed.
*/
- if (qi->qf_lists[qi->qf_curlist].qf_nonevalid
- || qf_list_empty(qi, qi->qf_curlist)
- || qi->qf_curlist >= qi->qf_listcount)
+ if (qf_stack_empty(qi)
+ || qi->qf_lists[qi->qf_curlist].qf_nonevalid
+ || qf_list_empty(qi, qi->qf_curlist))
{
if (win != NULL)
ex_cclose(eap);
@@ -4342,7 +4348,7 @@
}
/* Check if there is anything to display */
- if (qi->qf_curlist < qi->qf_listcount)
+ if (!qf_stack_empty(qi))
{
char_u dirname[MAXPATHL];
@@ -5333,7 +5339,7 @@
if ((eap->cmdidx != CMD_grepadd && eap->cmdidx != CMD_lgrepadd
&& eap->cmdidx != CMD_vimgrepadd
&& eap->cmdidx != CMD_lvimgrepadd)
- || qi->qf_curlist == qi->qf_listcount)
+ || qf_stack_empty(qi))
/* make place for a new list */
qf_new_list(qi, title != NULL ? title : qf_cmdtitle(*eap->cmdlinep));
@@ -6107,11 +6113,11 @@
flags = qf_getprop_keys2flags(what, (wp != NULL));
- if (qi != NULL && qi->qf_listcount != 0)
+ if (!qf_stack_empty(qi))
qf_idx = qf_getprop_qfidx(qi, what);
/* List is not present or is empty */
- if (qi == NULL || qi->qf_listcount == 0 || qf_idx == INVALID_QFIDX)
+ if (qf_stack_empty(qi) || qf_idx == INVALID_QFIDX)
return qf_getprop_defaults(qi, flags, retdict);
qfl = &qi->qf_lists[qf_idx];
@@ -6313,7 +6319,7 @@
* stack.
*/
*newlist = TRUE;
- qf_idx = qi->qf_listcount > 0 ? qi->qf_listcount - 1 : 0;
+ qf_idx = qf_stack_empty(qi) ? 0 : qi->qf_listcount - 1;
}
else if (qf_idx < 0 || qf_idx >= qi->qf_listcount)
return INVALID_QFIDX;
@@ -6324,7 +6330,7 @@
&& di->di_tv.vval.v_string != NULL
&& STRCMP(di->di_tv.vval.v_string, "$") == 0)
{
- if (qi->qf_listcount > 0)
+ if (!qf_stack_empty(qi))
qf_idx = qi->qf_listcount - 1;
else if (*newlist)
qf_idx = 0;
@@ -6452,7 +6458,7 @@
int qf_idx;
int newlist = FALSE;
- if (action == ' ' || qi->qf_curlist == qi->qf_listcount)
+ if (action == ' ' || qf_stack_empty(qi))
newlist = TRUE;
qf_idx = qf_setprop_get_qfidx(qi, what, action, &newlist);