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()))