commit d9bc4e34e3a880e31118af3b7f623d644af70253
parent 9a1cb594781574a53c2ceadee1b1cfb27267102e
Author: Louis Burda <quent.burda@gmail.com>
Date: Sun, 12 Nov 2023 21:02:15 +0100
Change data type since sizeof(char) not necessarily 1
Diffstat:
3 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/include/dvec.h b/include/dvec.h
@@ -12,7 +12,7 @@
#define DVEC_STRERR_INIT \
[DVEC_OK] = "Success", \
- [DVEC_LOCKED] = "Dvec locked"
+ [DVEC_LOCKED] = "Data vector locked"
#ifdef LIBDVEC_ASSERT_ARGS
#include "stdlib.h"
@@ -36,7 +36,7 @@ enum {
struct dvec {
size_t dsize;
size_t len, cap;
- char *data;
+ uint8_t *data;
uint8_t locked : 1; /* prevents resizes */
uint8_t fused : 1; /* single allocation w/ data */
const struct allocator *allocator;
@@ -169,5 +169,5 @@ dvec_idx(struct dvec *dvec, const void *p)
LIBDVEC_ABORT_ON_ARGS(!dvec || p < dvec->data
|| p >= dvec->data + dvec->dsize * dvec->len);
- return (size_t) ((char *)p - dvec->data) / dvec->dsize;
+ return (size_t) ((uint8_t *)p - dvec->data) / dvec->dsize;
}
diff --git a/src/dvec.c b/src/dvec.c
@@ -98,7 +98,7 @@ dvec_alloc_fused(size_t dsize, size_t cap,
dvec->dsize = dsize;
dvec->cap = cap;
dvec->len = 0;
- dvec->data = (char *) dvec + off;
+ dvec->data = (uint8_t *) dvec + off;
dvec->locked = false;
dvec->fused = true;
@@ -197,7 +197,7 @@ dvec_reserve(struct dvec *dvec, size_t len)
LIBDVEC_ABORT_ON_ALLOC(!data);
if (!data) return -rc;
dvec = data;
- dvec->data = (char *) dvec + off;
+ dvec->data = (uint8_t *) dvec + off;
} else {
data = dvec->allocator->realloc(dvec->allocator,
dvec->data, cap * dvec->dsize, &rc);
@@ -231,7 +231,7 @@ dvec_shrink(struct dvec *dvec)
LIBDVEC_ABORT_ON_ALLOC(!data);
if (!data) return -rc;
dvec = data;
- dvec->data = (char *) dvec + off;
+ dvec->data = (uint8_t *) dvec + off;
} else if (!dvec->len) {
rc = dvec->allocator->free(dvec->allocator, dvec->data);
LIBDVEC_ABORT_ON_ALLOC(rc);
@@ -305,8 +305,8 @@ dvec_iter_fwd(const struct dvec *dvec, const void *p)
return dvec->data;
else
return NULL;
- } else if ((char *) p < dvec->data + dvec->dsize * (dvec->len - 1)) {
- return (char *) p + dvec->dsize;
+ } else if ((uint8_t *) p < dvec->data + dvec->dsize * (dvec->len - 1)) {
+ return (uint8_t *) p + dvec->dsize;
} else {
return NULL;
}
@@ -325,8 +325,8 @@ dvec_iter_bwd(const struct dvec *dvec, const void *p)
return dvec->data + (dvec->len - 1) * dvec->dsize;
else
return NULL;
- } else if ((char *) p > dvec->data) {
- return (char *) p - dvec->dsize;
+ } else if ((uint8_t *) p > dvec->data) {
+ return (uint8_t *) p - dvec->dsize;
} else {
return NULL;
}
@@ -345,24 +345,24 @@ dvec_quick_sort(struct dvec *dvec, const struct allocator *allocator,
void *tmp, bool reverse, dvec_sort_order_fn in_order, void *user)
{
struct dvec stack;
- char *pivot, *lo, *hi;
- char *start, *end;
+ uint8_t *pivot, *lo, *hi;
+ uint8_t *start, *end;
size_t dsize;
bool lo_order, hi_order;
int rc;
if (!dvec->len) return DVEC_OK;
- rc = dvec_init(&stack, sizeof(char *), 32, allocator);
+ rc = dvec_init(&stack, sizeof(uint8_t *), 32, allocator);
if (rc) return rc;
dsize = dvec->dsize;
- *(char **)dvec_push(&stack) = dvec_front(dvec);
- *(char **)dvec_push(&stack) = dvec_back(dvec);
+ *(uint8_t **)dvec_push(&stack) = dvec_front(dvec);
+ *(uint8_t **)dvec_push(&stack) = dvec_back(dvec);
while (!dvec_empty(&stack)) {
- end = *(char **)dvec_pop(&stack);
- start = *(char **)dvec_pop(&stack);
+ end = *(uint8_t **)dvec_pop(&stack);
+ start = *(uint8_t **)dvec_pop(&stack);
if (start == end) continue;
@@ -387,13 +387,13 @@ dvec_quick_sort(struct dvec *dvec, const struct allocator *allocator,
}
if (start != pivot) {
- *(char **)dvec_push(&stack) = start;
- *(char **)dvec_push(&stack) = pivot - dsize;
+ *(uint8_t **)dvec_push(&stack) = start;
+ *(uint8_t **)dvec_push(&stack) = pivot - dsize;
}
if (end != pivot) {
- *(char **)dvec_push(&stack) = pivot + dsize;
- *(char **)dvec_push(&stack) = end;
+ *(uint8_t **)dvec_push(&stack) = pivot + dsize;
+ *(uint8_t **)dvec_push(&stack) = end;
}
}
diff --git a/src/test.c b/src/test.c
@@ -71,7 +71,7 @@ main(int argc, const char **argv)
if (!fused) LIBDVEC_ERR(rc);
printf("fused: %p %p (+%li)\n", (void *) fused,
- fused->data, fused->data - (char *) fused);
+ fused->data, fused->data - (uint8_t *) fused);
rc = dvec_free(fused);
if (rc) LIBDVEC_ERR(rc);