fix(memline): don't check line count for closed memline #32403

Problem:  Error thrown when for invalid line number which may be accessed
          in an `on_detach` callback at which point line count is
          intentionally set to 0.
Solution: Move empty memline check to before line number check.
This commit is contained in:
luukvbaal
2025-02-12 17:20:51 +01:00
committed by GitHub
parent be8d87014c
commit 15bc930fca
2 changed files with 23 additions and 5 deletions

View File

@@ -1875,6 +1875,11 @@ static char *ml_get_buf_impl(buf_T *buf, linenr_T lnum, bool will_change)
static int recursive = 0;
static char questions[4];
if (buf->b_ml.ml_mfp == NULL) { // there are no lines
buf->b_ml.ml_line_len = 1;
return "";
}
if (lnum > buf->b_ml.ml_line_count) { // invalid line number
if (recursive == 0) {
// Avoid giving this message for a recursive call, may happen when
@@ -1892,11 +1897,6 @@ errorret:
}
lnum = MAX(lnum, 1); // pretend line 0 is line 1
if (buf->b_ml.ml_mfp == NULL) { // there are no lines
buf->b_ml.ml_line_len = 1;
return "";
}
// See if it is the same line as requested last time.
// Otherwise may need to flush last used line.
// Don't use the last used line when 'swapfile' is reset, need to load all