diff options
author | Glenn Strauss <gstrauss@gluelogic.com> | 2022-12-10 15:18:26 -0500 |
---|---|---|
committer | Glenn Strauss <gstrauss@gluelogic.com> | 2022-12-10 15:25:28 -0500 |
commit | 5fe8322e167d4e8360c9076a7119329a25f85f27 (patch) | |
tree | b8f647ef974f4001ddd7fb8ef8baa4f52542d760 /src/vector.h | |
parent | 5e14db43b7212b52f1cfcd2b0fce41df7fc419eb (diff) | |
download | lighttpd-git-5fe8322e167d4e8360c9076a7119329a25f85f27.tar.gz |
[core] create non-inlined vector_resize()
reduce inlined code generated by use of vector_*_push()
when calling vector_*_reserve() derived from local vector.[ch]
Diffstat (limited to 'src/vector.h')
-rw-r--r-- | src/vector.h | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/src/vector.h b/src/vector.h index 49b300fc..ec5ece44 100644 --- a/src/vector.h +++ b/src/vector.h @@ -4,15 +4,10 @@ #include "ck.h" /* ck_assert() ck_calloc() */ -static inline size_t vector_align_size(size_t s) { - size_t a = (s + 15) & ~(size_t)15uL; - return (a < s) ? s : a; -} - void vector_free(void *data); __attribute_returns_nonnull__ -void *vector_realloc(void *data, size_t elem_size, size_t size, size_t used); +void *vector_resize(void *data, size_t elem_size, size_t *size, size_t used, size_t x); #define DEFINE_TYPED_VECTOR(name, entry, release) \ typedef struct vector_ ## name { \ @@ -41,11 +36,8 @@ void *vector_realloc(void *data, size_t elem_size, size_t size, size_t used); } \ } \ static inline void vector_ ## name ## _reserve(vector_ ## name *v, size_t p) { \ - if (v->size - v->used < p) { \ - ck_assert(v->used < SIZE_MAX - p); \ - v->size = vector_align_size(v->used + p); \ - v->data = vector_realloc(v->data, sizeof(entry), v->size, v->used); \ - } \ + if (v->size - v->used < p) \ + v->data = vector_resize(v->data, sizeof(entry), &v->size, v->used, p); \ } \ static inline void vector_ ## name ## _push(vector_ ## name *v, entry e) { \ vector_ ## name ## _reserve(v, 1); \ |