diff --git a/epan/wmem/wmem_array.c b/epan/wmem/wmem_array.c index 1badfdd4bd..ced7e62f81 100644 --- a/epan/wmem/wmem_array.c +++ b/epan/wmem/wmem_array.c @@ -129,7 +129,7 @@ wmem_array_append(wmem_array_t *array, const void *in, guint count) void * wmem_array_index(wmem_array_t *array, guint array_index) { - ws_assert(array_index < array->elem_count); + ws_assert_bounds(array_index < array->elem_count); return &array->buf[array_index * array->elem_size]; } diff --git a/wsutil/ws_assert.h b/wsutil/ws_assert.h index 6c2373bf95..2ffa559617 100644 --- a/wsutil/ws_assert.h +++ b/wsutil/ws_assert.h @@ -43,4 +43,9 @@ WS_NORETURN void ws_assert_not_reached(void) { abort(); }; +/* ws_assert_bounds() is always enabled. For bounds check where the array + * size is known sometimes it's just not worth disabling assertions. + */ +#define ws_assert_bounds(expr) g_assert_true(expr) + #endif /* __WS_ASSERT_H__ */