diff options
| author | 2026-09-14 08:57:42 -0400 | |
|---|---|---|
| committer | 2026-09-14 08:57:42 -0400 | |
| commit | 8f208c26b6fa1a9f3372679c047cab559c06e26b (patch) | |
| tree | 323d894d6ff8e1ed1445c40cb1e2f5d3cee5e8e8 /src/cache | |
| parent | c66c7c64ebd16287b892f8a780cffcabafba3799 (diff) | |
| download | camu-8f208c26b6fa1a9f3372679c047cab559c06e26b.tar.gz camu-8f208c26b6fa1a9f3372679c047cab559c06e26b.tar.bz2 camu-8f208c26b6fa1a9f3372679c047cab559c06e26b.zip | |
Server-side fixes from DIRECT_MODE testing
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/cache')
| -rw-r--r-- | src/cache/backings/file.c | 1 | ||||
| -rw-r--r-- | src/cache/backings/file_common.h | 10 | ||||
| -rw-r--r-- | src/cache/backings/file_mapped.c | 1 |
3 files changed, 8 insertions, 4 deletions
diff --git a/src/cache/backings/file.c b/src/cache/backings/file.c index c98c8d5..61506a8 100644 --- a/src/cache/backings/file.c +++ b/src/cache/backings/file.c @@ -100,6 +100,7 @@ struct cch_backing *cch_backing_file_create(str *path, size_t size) nn_mutex_init(&file->mutex); return (struct cch_backing *)file; err: + al_array_free(file->backing.available); al_free(file); return NULL; } 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); diff --git a/src/cache/backings/file_mapped.c b/src/cache/backings/file_mapped.c index 24ac005..021c304 100644 --- a/src/cache/backings/file_mapped.c +++ b/src/cache/backings/file_mapped.c @@ -91,6 +91,7 @@ struct cch_backing *cch_backing_file_create(str *path, size_t size) nn_mutex_init(&file->mutex); return (struct cch_backing *)file; err: + al_array_free(file->backing.available); al_free(file); return NULL; } |