From d2944e6a298e824e5084ac0dfd8701ff9cd1a523 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Thu, 17 May 2018 08:16:58 +0200 Subject: [PATCH] mf_open(): never fails (except for OOM) --- src/nvim/memfile.c | 3 +-- src/nvim/memline.c | 18 ++++++------------ src/nvim/spell.c | 2 +- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/nvim/memfile.c b/src/nvim/memfile.c index f6e03e2532..fe4d24ba11 100644 --- a/src/nvim/memfile.c +++ b/src/nvim/memfile.c @@ -76,8 +76,7 @@ /// @param flags Flags for open() call. /// -/// @return - The open memory file, on success. -/// - NULL, on failure. +/// @return The open memory file. memfile_T *mf_open(char_u *fname, int flags) { memfile_T *mfp = xmalloc(sizeof(memfile_T)); diff --git a/src/nvim/memline.c b/src/nvim/memline.c index 06de9fda67..3b0cac0456 100644 --- a/src/nvim/memline.c +++ b/src/nvim/memline.c @@ -246,7 +246,6 @@ typedef enum { */ int ml_open(buf_T *buf) { - memfile_T *mfp; bhdr_T *hp = NULL; ZERO_BL *b0p; PTR_BL *pp; @@ -275,12 +274,8 @@ int ml_open(buf_T *buf) buf->b_may_swap = false; } - /* - * Open the memfile. No swap file is created yet. - */ - mfp = mf_open(NULL, 0); - if (mfp == NULL) - goto error; + // Open the memfile. No swap file is created yet. + memfile_T *mfp = mf_open(NULL, 0); buf->b_ml.ml_mfp = mfp; buf->b_ml.ml_flags = ML_EMPTY; @@ -364,11 +359,10 @@ int ml_open(buf_T *buf) return OK; error: - if (mfp != NULL) { - if (hp) - mf_put(mfp, hp, false, false); - mf_close(mfp, true); /* will also xfree(mfp->mf_fname) */ + if (hp) { + mf_put(mfp, hp, false, false); } + mf_close(mfp, true); // will also xfree(mfp->mf_fname) buf->b_ml.ml_mfp = NULL; return FAIL; } @@ -842,7 +836,7 @@ void ml_recover(void) mf_open() will consume "fname_used"! */ mfp = mf_open(fname_used, O_RDONLY); fname_used = p; - if (mfp == NULL || mfp->mf_fd < 0) { + if (mfp->mf_fd < 0) { EMSG2(_("E306: Cannot open %s"), fname_used); goto theend; } diff --git a/src/nvim/spell.c b/src/nvim/spell.c index 22390557b6..686962704a 100644 --- a/src/nvim/spell.c +++ b/src/nvim/spell.c @@ -2488,7 +2488,7 @@ buf_T *open_spellbuf(void) buf->b_spell = true; buf->b_p_swf = true; // may create a swap file if (ml_open(buf) == FAIL) { - ELOG("Error opening a new memline"); + abort(); } ml_open_file(buf); // create swap file now