summaryrefslogtreecommitdiff
path: root/src/cache
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2025-04-16 15:12:41 -0400
committerAndrew Opalach <andrew@akon.city> 2025-04-16 15:15:01 -0400
commitae8822ec0327c4d5674f1dc79de926b230f27f1f (patch)
treee57027812d73baf7ab617222aa55ad2fe4c33a55 /src/cache
parent832b3ab11fd6457c59aed9d5bf12ba40c117f15d (diff)
downloadcamu-ae8822ec0327c4d5674f1dc79de926b230f27f1f.tar.gz
camu-ae8822ec0327c4d5674f1dc79de926b230f27f1f.tar.bz2
camu-ae8822ec0327c4d5674f1dc79de926b230f27f1f.zip
Highly wip waveform view
Signed-off-by: Andrew Opalach <andrew@akon.city>
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);
}