summaryrefslogtreecommitdiff
path: root/src/cache
diff options
context:
space:
mode:
Diffstat (limited to 'src/cache')
-rw-r--r--src/cache/backings/file.c6
-rw-r--r--src/cache/backings/file_mapped.c12
-rw-r--r--src/cache/backings/memory.c4
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);
}