From 0470ca3416388e7e58b64f63bfe505d454f150b9 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Mon, 23 Jun 2025 14:41:38 -0400 Subject: all: *_free() check consistency, C++ compat Signed-off-by: Andrew Opalach --- include/al/array_typed.h | 2 +- include/al/str.h | 2 +- include/al/wstr.h | 2 +- meson.build | 2 +- src/array.c | 1 + src/ring_buffer.c | 30 +++++++++++++++--------------- 6 files changed, 20 insertions(+), 19 deletions(-) diff --git a/include/al/array_typed.h b/include/al/array_typed.h index e4a6c53..73e77f7 100644 --- a/include/al/array_typed.h +++ b/include/al/array_typed.h @@ -88,7 +88,7 @@ } \ static inline void al_array_free(N, __VA_ARGS__)(array(N, __VA_ARGS__) *array) \ { \ - if (array->data != NULL) al_free(array->data); \ + if (array->data) al_free(array->data); \ } #define AL_ARRAY_DEFINE(N, T) \ diff --git a/include/al/str.h b/include/al/str.h index 93b4f4a..ac5dba8 100644 --- a/include/al/str.h +++ b/include/al/str.h @@ -34,7 +34,7 @@ static inline bool al_str_is_empty(str *s) static inline void al_str_free(str *s) { - if (s->alloc > 0) al_free(s->data); + if (s->alloc) al_free(s->data); } static inline u32 al_str_reserve(str *s, u32 size) diff --git a/include/al/wstr.h b/include/al/wstr.h index c80eac2..af66161 100644 --- a/include/al/wstr.h +++ b/include/al/wstr.h @@ -44,7 +44,7 @@ static inline bool al_wstr_is_empty(wstr *w) static inline void al_wstr_free(wstr *w) { - if (w->alloc > 0) al_free(w->data); + if (w->alloc) al_free(w->data); } static inline u32 al_wstr_reserve(wstr *w, u32 size) diff --git a/meson.build b/meson.build index 3e8c70b..a8b9d41 100644 --- a/meson.build +++ b/meson.build @@ -21,7 +21,7 @@ have_posix_memalign = compiler.has_function( have_wide_string = compiler.has_function('wcsrtombs') have_wide_string_width = compiler.has_function('wcswidth') -# For testing: '-Wshadow', '-Wconversion' +# For testing: '-Wshadow', '-Wconversion', '-Wc++-compat' alabaster_args = ['-fstrict-aliasing', '-Wstrict-aliasing'] if is_debug diff --git a/src/array.c b/src/array.c index c94994b..80dc730 100644 --- a/src/array.c +++ b/src/array.c @@ -2,6 +2,7 @@ #include "../include/al/macros.h" #include "../include/al/array_sort.h" +// Initially based on XV by Kang Seonghoon. // https://github.com/lifthrasiir/angolmois/blob/master/angolmois.c#L79 // https://gist.github.com/lifthrasiir/4422136 diff --git a/src/ring_buffer.c b/src/ring_buffer.c index b1c2fe5..5c4307f 100644 --- a/src/ring_buffer.c +++ b/src/ring_buffer.c @@ -30,15 +30,15 @@ static inline void add(struct al_ring_buffer *buf, u8 **v, u8 *ptr, ptrdiff_t n) ptrdiff_t al_ring_buffer_space(struct al_ring_buffer *buf) { - u8 *wp = al_atomic_load(void)(&buf->write, AL_ATOMIC_RELAXED); + u8 *wp = (u8 *)al_atomic_load(void)(&buf->write, AL_ATOMIC_RELAXED); u8 *rp = previous(buf, (u8 *)al_atomic_load(void)(&buf->read, AL_ATOMIC_RELAXED)); return (wp <= rp) ? rp - wp : (buf->end - wp) + (rp - buf->start); } u8 *al_ring_buffer_write_chunk(struct al_ring_buffer *buf, ptrdiff_t *size) { - u8 *wp = al_atomic_load(void)(&buf->write, AL_ATOMIC_ACQUIRE); - u8 *rp = previous(buf, al_atomic_load(void)(&buf->read, AL_ATOMIC_RELAXED)); + u8 *wp = (u8 *)al_atomic_load(void)(&buf->write, AL_ATOMIC_ACQUIRE); + u8 *rp = previous(buf, (u8 *)al_atomic_load(void)(&buf->read, AL_ATOMIC_RELAXED)); *size = ((wp <= rp) ? rp : buf->end) - wp; return wp; } @@ -50,15 +50,15 @@ void al_ring_buffer_append(struct al_ring_buffer *buf, u8 *ptr, ptrdiff_t n) ptrdiff_t al_ring_buffer_occupied(struct al_ring_buffer *buf) { - u8 *rp = al_atomic_load(void)(&buf->read, AL_ATOMIC_RELAXED); - u8 *wp = al_atomic_load(void)(&buf->write, AL_ATOMIC_RELAXED); + u8 *rp = (u8 *)al_atomic_load(void)(&buf->read, AL_ATOMIC_RELAXED); + u8 *wp = (u8 *)al_atomic_load(void)(&buf->write, AL_ATOMIC_RELAXED); return (rp <= wp) ? wp - rp : (buf->end - rp) + (wp - buf->start); } u8 *al_ring_buffer_read_chunk(struct al_ring_buffer *buf, ptrdiff_t *size) { - u8 *rp = al_atomic_load(void)(&buf->read, AL_ATOMIC_ACQUIRE); - u8 *wp = al_atomic_load(void)(&buf->write, AL_ATOMIC_RELAXED); + u8 *rp = (u8 *)al_atomic_load(void)(&buf->read, AL_ATOMIC_ACQUIRE); + u8 *wp = (u8 *)al_atomic_load(void)(&buf->write, AL_ATOMIC_RELAXED); *size = ((rp <= wp) ? wp : buf->end) - rp; return rp; } @@ -70,8 +70,8 @@ void al_ring_buffer_consume(struct al_ring_buffer *buf, u8 *ptr, ptrdiff_t n) ptrdiff_t al_ring_buffer_write(struct al_ring_buffer *buf, u8 *data, ptrdiff_t n) { - u8 *wp = al_atomic_load(void)(&buf->write, AL_ATOMIC_ACQUIRE); - u8 *rp = previous(buf, al_atomic_load(void)(&buf->read, AL_ATOMIC_RELAXED)); + u8 *wp = (u8 *)al_atomic_load(void)(&buf->write, AL_ATOMIC_ACQUIRE); + u8 *rp = previous(buf, (u8 *)al_atomic_load(void)(&buf->read, AL_ATOMIC_RELAXED)); ptrdiff_t size = MIN(((wp <= rp) ? rp : buf->end) - wp, n); al_memcpy(wp, data, (size_t)size); @@ -91,8 +91,8 @@ ptrdiff_t al_ring_buffer_write(struct al_ring_buffer *buf, u8 *data, ptrdiff_t n ptrdiff_t al_ring_buffer_read(struct al_ring_buffer *buf, u8 *ptr, ptrdiff_t n) { - u8 *rp = al_atomic_load(void)(&buf->read, AL_ATOMIC_ACQUIRE); - u8 *wp = al_atomic_load(void)(&buf->write, AL_ATOMIC_RELAXED); + u8 *rp = (u8 *)al_atomic_load(void)(&buf->read, AL_ATOMIC_ACQUIRE); + u8 *wp = (u8 *)al_atomic_load(void)(&buf->write, AL_ATOMIC_RELAXED); ptrdiff_t size = MIN(((rp <= wp) ? wp : buf->end) - rp, n); al_memcpy(ptr, rp, (size_t)size); @@ -112,8 +112,8 @@ ptrdiff_t al_ring_buffer_read(struct al_ring_buffer *buf, u8 *ptr, ptrdiff_t n) ptrdiff_t al_ring_buffer_peek(struct al_ring_buffer *buf, u8 *ptr, ptrdiff_t offset, ptrdiff_t n) { - u8 *rp = al_atomic_load(void)(&buf->read, AL_ATOMIC_RELAXED); - u8 *wp = al_atomic_load(void)(&buf->write, AL_ATOMIC_RELAXED); + u8 *rp = (u8 *)al_atomic_load(void)(&buf->read, AL_ATOMIC_RELAXED); + u8 *wp = (u8 *)al_atomic_load(void)(&buf->write, AL_ATOMIC_RELAXED); ptrdiff_t size; if (rp <= wp) { @@ -144,8 +144,8 @@ ptrdiff_t al_ring_buffer_peek(struct al_ring_buffer *buf, u8 *ptr, ptrdiff_t off ptrdiff_t al_ring_buffer_discard(struct al_ring_buffer *buf, ptrdiff_t n) { - u8 *rp = al_atomic_load(void)(&buf->read, AL_ATOMIC_ACQUIRE); - u8 *wp = al_atomic_load(void)(&buf->write, AL_ATOMIC_RELAXED); + u8 *rp = (u8 *)al_atomic_load(void)(&buf->read, AL_ATOMIC_ACQUIRE); + u8 *wp = (u8 *)al_atomic_load(void)(&buf->write, AL_ATOMIC_RELAXED); ptrdiff_t discard = MIN(((rp <= wp) ? wp : buf->end) - rp, n); rp += discard; -- cgit v1.2.3-101-g0448