From 7f23d4b756fc419787408b3be7c7fcc9dfe01cc9 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Wed, 22 Oct 2014 19:23:54 +0100 Subject: [PATCH] Close fd before notifiying buffer of modification when writing to file --- src/file.cc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/file.cc b/src/file.cc index 3f6b71aa..a8c20205 100644 --- a/src/file.cc +++ b/src/file.cc @@ -194,13 +194,15 @@ void write_buffer_to_file(Buffer& buffer, StringView filename) { buffer.run_hook_in_own_context("BufWritePre", buffer.name()); - int fd = open(parse_filename(filename).c_str(), - O_CREAT | O_WRONLY | O_TRUNC, 0644); - if (fd == -1) - throw file_access_error(filename, strerror(errno)); - auto close_fd = on_scope_end([fd]{ close(fd); }); + { + int fd = open(parse_filename(filename).c_str(), + O_CREAT | O_WRONLY | O_TRUNC, 0644); + if (fd == -1) + throw file_access_error(filename, strerror(errno)); + auto close_fd = on_scope_end([fd]{ close(fd); }); - write_buffer_to_fd(buffer, fd); + write_buffer_to_fd(buffer, fd); + } if ((buffer.flags() & Buffer::Flags::File) and real_path(filename) == real_path(buffer.name()))