Close fd before notifiying buffer of modification when writing to file

This commit is contained in:
Maxime Coste 2014-10-22 19:23:54 +01:00
parent b2e90fe21e
commit 7f23d4b756

View File

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