@@ -1430,8 +1430,14 @@ do_buffer_ext(
14301430 buf = buflist_findnr (curwin -> w_jumplist [jumpidx ].fmark .fnum );
14311431 if (buf != NULL )
14321432 {
1433- if (buf == curbuf || !buf -> b_p_bl )
1434- buf = NULL ; // skip current and unlisted bufs
1433+ // Skip current and unlisted bufs. Also skip a quickfix
1434+ // buffer, it might be deleted soon.
1435+ if (buf == curbuf || !buf -> b_p_bl
1436+ #if defined(FEAT_QUICKFIX )
1437+ || bt_quickfix (buf )
1438+ #endif
1439+ )
1440+ buf = NULL ;
14351441 else if (buf -> b_ml .ml_mfp == NULL)
14361442 {
14371443 // skip unloaded buf, but may keep it for later
@@ -1467,7 +1473,11 @@ do_buffer_ext(
14671473 continue ;
14681474 }
14691475 // in non-help buffer, try to skip help buffers, and vv
1470- if (buf -> b_help == curbuf -> b_help && buf -> b_p_bl )
1476+ if (buf -> b_help == curbuf -> b_help && buf -> b_p_bl
1477+ #if defined(FEAT_QUICKFIX )
1478+ & & !bt_quickfix (buf )
1479+ #endif
1480+ )
14711481 {
14721482 if (buf -> b_ml .ml_mfp != NULL ) // found loaded buffer
14731483 break ;
@@ -1485,7 +1495,11 @@ do_buffer_ext(
14851495 if (buf == NULL ) // No loaded buffer, find listed one
14861496 {
14871497 FOR_ALL_BUFFERS (buf )
1488- if (buf -> b_p_bl && buf != curbuf )
1498+ if (buf -> b_p_bl && buf != curbuf
1499+ #if defined(FEAT_QUICKFIX )
1500+ && !bt_quickfix (buf )
1501+ #endif
1502+ )
14891503 break ;
14901504 }
14911505 if (buf == NULL ) // Still no buffer, just take one
@@ -1494,6 +1508,10 @@ do_buffer_ext(
14941508 buf = curbuf -> b_next ;
14951509 else
14961510 buf = curbuf -> b_prev ;
1511+ #if defined(FEAT_QUICKFIX )
1512+ if (bt_quickfix (buf ))
1513+ buf = NULL ;
1514+ #endif
14971515 }
14981516 }
14991517
0 commit comments