diff options
Diffstat (limited to 'src/cache/backings')
| -rw-r--r-- | src/cache/backings/file.c | 6 | ||||
| -rw-r--r-- | src/cache/backings/file_mapped.c | 12 | ||||
| -rw-r--r-- | src/cache/backings/memory.c | 4 |
3 files changed, 15 insertions, 7 deletions
diff --git a/src/cache/backings/file.c b/src/cache/backings/file.c index 9b905ac..500e16f 100644 --- a/src/cache/backings/file.c +++ b/src/cache/backings/file.c @@ -84,10 +84,12 @@ struct cch_backing *cch_backing_file_create(str *path, size_t size) file->backing.free = file_backing_free; al_array_init(file->backing.available); if (!file_open_internal(file, path, size)) { - al_free(file); - return NULL; + goto err; } file->u.pointer = 0; nn_mutex_init(&file->mutex); return (struct cch_backing *)file; +err: + al_free(file); + return NULL; } diff --git a/src/cache/backings/file_mapped.c b/src/cache/backings/file_mapped.c index 17620d0..adb840c 100644 --- a/src/cache/backings/file_mapped.c +++ b/src/cache/backings/file_mapped.c @@ -76,10 +76,16 @@ struct cch_backing *cch_backing_file_create(str *path, size_t size) file->backing.resize = file_backing_resize; file->backing.free = file_backing_free; al_array_init(file->backing.available); - if (!file_open_internal(file, path, size) || !(file->u.map = nn_file_mmap(&file->file))) { - al_free(file); - return NULL; + if (!file_open_internal(file, path, size)) { + goto err; + } + if (!(file->u.map = nn_file_mmap(&file->file))) { + nn_file_close(&file->file); + goto err; } nn_mutex_init(&file->mutex); return (struct cch_backing *)file; +err: + al_free(file); + return NULL; } diff --git a/src/cache/backings/memory.c b/src/cache/backings/memory.c index aa5c1b4..8e0306a 100644 --- a/src/cache/backings/memory.c +++ b/src/cache/backings/memory.c @@ -21,7 +21,7 @@ static void memory_backing_write(struct cch_backing *backing, u8 *buf, off_t ind struct cch_backing_memory *mem = (struct cch_backing_memory *)backing; nn_mutex_lock(&mem->mutex); if (mem->size >= 0 && index + (off_t)*size >= mem->size) { - *size = MAX(mem->size - index, (off_t)0L); + *size = MAX(mem->size - index, (off_t)0); } ensure_alloced(mem, index + *size); al_memcpy(mem->data + index, buf, *size); @@ -34,7 +34,7 @@ static u8 *memory_backing_get_ptr(struct cch_backing *backing, off_t index, size struct cch_backing_memory *mem = (struct cch_backing_memory *)backing; nn_mutex_lock(&mem->mutex); if (mem->size >= 0 && index + (off_t)*size >= mem->size) { - *size = MAX(mem->size - index, (off_t)0L); + *size = MAX(mem->size - index, (off_t)0); } return (u8 *)(mem->data + index); } |