aboutsummaryrefslogtreecommitdiff
path: root/text.c
diff options
context:
space:
mode:
Diffstat (limited to 'text.c')
-rw-r--r--text.c10
1 files changed, 1 insertions, 9 deletions
diff --git a/text.c b/text.c
index e6edf90..5ab53b3 100644
--- a/text.c
+++ b/text.c
@@ -960,21 +960,13 @@ static bool text_save_begin_inplace(TextSave *ctx) {
ssize_t written = write_all(newfd, block->data, size);
if (written == -1 || (size_t)written != size)
goto err;
- if (munmap(block->data, size) == -1)
- goto err;
-
- void *data = mmap(block->data, size, PROT_READ, MAP_SHARED, newfd, 0);
+ void *data = mmap(block->data, size, PROT_READ, MAP_SHARED|MAP_FIXED, newfd, 0);
if (data == MAP_FAILED)
goto err;
- if (data != block->data) {
- munmap(data, size);
- goto err;
- }
bool close_failed = (close(newfd) == -1);
newfd = -1;
if (close_failed)
goto err;
- block->data = data;
block->type = MMAP;
}
/* overwrite the existing file content, if something goes wrong