diff options
Diffstat (limited to 'src/nvim/quickfix.c')
| -rw-r--r-- | src/nvim/quickfix.c | 18 | 
1 files changed, 14 insertions, 4 deletions
| diff --git a/src/nvim/quickfix.c b/src/nvim/quickfix.c index 151b9d3790..f48560007a 100644 --- a/src/nvim/quickfix.c +++ b/src/nvim/quickfix.c @@ -1581,9 +1581,17 @@ win_found:          ok = do_ecmd(qf_ptr->qf_fnum, NULL, NULL, NULL, (linenr_T)1,              ECMD_HIDE + ECMD_SET_HELP,              oldwin == curwin ? curwin : NULL); -    } else +    } else {        ok = buflist_getfile(qf_ptr->qf_fnum,            (linenr_T)1, GETF_SETMARK | GETF_SWITCH, forceit); +      if (qi != &ql_info && !win_valid(oldwin)) { +        EMSG(_("E924: Current window was closed")); +        ok = false; +        qi = NULL; +        qf_ptr = NULL; +        opened_window = false; +      } +    }    }    if (ok == OK) { @@ -1665,7 +1673,7 @@ win_found:    } else {      if (opened_window)        win_close(curwin, TRUE);          /* Close opened window */ -    if (qf_ptr->qf_fnum != 0) { +    if (qf_ptr != NULL && qf_ptr->qf_fnum != 0) {        /*         * Couldn't open file, so put index back where it was.  This could         * happen if the file was readonly and we changed something. @@ -1676,8 +1684,10 @@ failed:      }    }  theend: -  qi->qf_lists[qi->qf_curlist].qf_ptr = qf_ptr; -  qi->qf_lists[qi->qf_curlist].qf_index = qf_index; +  if (qi != NULL) { +    qi->qf_lists[qi->qf_curlist].qf_ptr = qf_ptr; +    qi->qf_lists[qi->qf_curlist].qf_index = qf_index; +  }    if (p_swb != old_swb && opened_window) {      /* Restore old 'switchbuf' value, but not when an autocommand or       * modeline has changed the value. */ | 
