diff options
Diffstat (limited to 'src/cache/backings/file_common.h')
| -rw-r--r-- | src/cache/backings/file_common.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/cache/backings/file_common.h b/src/cache/backings/file_common.h index 6dd4e96..8b4797d 100644 --- a/src/cache/backings/file_common.h +++ b/src/cache/backings/file_common.h @@ -35,14 +35,16 @@ static bool file_open_internal(struct cch_backing_file *file, str *path, size_t if (!nn_file_wrap_fd(&file->file, fd)) { return false; } - } else { - if (!nn_file_open(&file->file, path, flags)) { - return false; - } + } else if (!nn_file_open(&file->file, path, flags)) { + return false; } size_t filesize = file->file.size; if (!size) { file->backing.size = filesize; + if (!filesize) { + nn_file_close(&file->file); + return false; + } cch_backing_fill_range(&file->backing, 0, filesize); } else if (filesize < size) { nn_file_truncate(&file->file, size); |