summaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2023-05-27 18:02:55 +0100
committerBram Moolenaar <Bram@vim.org>2023-05-27 18:02:55 +0100
commit3a2a60ce4a8e73594bca16814672fcc243d093ac (patch)
tree4a105c50b7f3a3e219e49bd73f5f4730d90bcefd /src/buffer.c
parenta40c0bcc83c32da02869f59b10538d6327df61c5 (diff)
patch 9.0.1583: get E304 when using 'cryptmethod' "xchacha20v2"v9.0.1583
Problem: Get E304 when using 'cryptmethod' "xchacha20v2". (Steve Mynott) Solution: Add 4th crypt method to block zero ID check. Avoid syncing a swap file before reading the file. (closes #12433)
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/buffer.c b/src/buffer.c
index a47342a3f5..330b3b98f6 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -218,6 +218,10 @@ open_buffer(
return FAIL;
}
+ // Do not sync this buffer yet, may first want to read the file.
+ if (curbuf->b_ml.ml_mfp != NULL)
+ curbuf->b_ml.ml_mfp->mf_dirty = MF_DIRTY_YES_NOSYNC;
+
// The autocommands in readfile() may change the buffer, but only AFTER
// reading the file.
set_bufref(&old_curbuf, curbuf);
@@ -298,6 +302,11 @@ open_buffer(
retval = read_buffer(TRUE, eap, flags);
}
+ // Can now sync this buffer in ml_sync_all().
+ if (curbuf->b_ml.ml_mfp != NULL
+ && curbuf->b_ml.ml_mfp->mf_dirty == MF_DIRTY_YES_NOSYNC)
+ curbuf->b_ml.ml_mfp->mf_dirty = MF_DIRTY_YES;
+
// if first time loading this buffer, init b_chartab[]
if (curbuf->b_flags & BF_NEVERLOADED)
{