Hi Bram, On Thu, Aug 9, 2018 at 12:52 PM, Bram Moolenaar <b...@moolenaar.net> wrote: > > Patch 8.1.0261 > Problem: Coverity complains about a negative array index. > Solution: When qf_id2nr() cannot find the list then don't set qf_curlist. > Files: src/quickfix.c > > > *** ../vim-8.1.0260/src/quickfix.c 2018-08-09 21:19:15.774436077 +0200 > --- src/quickfix.c 2018-08-09 21:49:36.929501416 +0200 > *************** > *** 4339,4352 **** > } > > /* > * Jump to the first entry if there is one. > */ > static void > qf_jump_first(qf_info_T *qi, int_u save_qfid, int forceit) > { > ! // If autocommands changed the current list, then restore it > ! if (qi->qf_lists[qi->qf_curlist].qf_id != save_qfid) > ! qi->qf_curlist = qf_id2nr(qi, save_qfid); > > // Autocommands might have cleared the list, check for it > if (!qf_list_empty(qi, qi->qf_curlist)) > --- 4335,4365 ---- > } > > /* > + * 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. > + */ > + static void > + qf_restore_list(qf_info_T *qi, int_u save_qfid) > + { > + int curlist; > + > + 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? >
In all the places where qf_restore_list() is currently invoked, there is a call to qflist_valid() to check whether the list with the specified id is present or not. If the list is not present, then qf_restore_list() is not called. But in the future, someone might call qf_restore_list() without first checking whether the list is still present in the stack or not. Regards, Yegappan > + } > + } > + > + /* -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.