From 8cf1229062f038383923983bb6c00b8b2557ebd4 Mon Sep 17 00:00:00 2001 From: lis05 <96944497+lis05@users.noreply.github.com> Date: Wed, 16 Apr 2025 22:46:04 +0200 Subject: [PATCH] Update cvector.h Fixed the issue of cvector_resize not resizing the vector if it is equal to NULL (therefore has not been operated on yet). --- cvector.h | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/cvector.h b/cvector.h index 22bac2b..3539042 100644 --- a/cvector.h +++ b/cvector.h @@ -463,23 +463,30 @@ typedef struct cvector_metadata_t { * @param value - the value to initialize new elements with * @return void */ -#define cvector_resize(vec, count, value) \ - do { \ - if (vec) { \ - size_t cv_resize_count__ = (size_t)(count); \ - size_t cv_resize_sz__ = cvector_vec_to_base(vec)->size; \ - if (cv_resize_count__ > cv_resize_sz__) { \ - cvector_reserve((vec), cv_resize_count__); \ - cvector_set_size((vec), cv_resize_count__); \ - do { \ - (vec)[cv_resize_sz__++] = (value); \ - } while (cv_resize_sz__ < cv_resize_count__); \ - } else { \ - while (cv_resize_count__ < cv_resize_sz__--) { \ - cvector_pop_back(vec); \ - } \ - } \ - } \ +#define cvector_resize(vec, count, value) \ + do { \ + size_t cv_resize_count__ = (size_t)(count); \ + if ((vec)) { \ + size_t cv_resize_sz__ = cvector_vec_to_base(vec)->size; \ + if (cv_resize_count__ > cv_resize_sz__) { \ + cvector_reserve((vec), cv_resize_count__); \ + cvector_set_size((vec), cv_resize_count__); \ + do { \ + (vec)[cv_resize_sz__++] = (value); \ + } while (cv_resize_sz__ < cv_resize_count__); \ + } \ + else { \ + while (cv_resize_count__ < cv_resize_sz__--) { \ + cvector_pop_back(vec); \ + } \ + } \ + } \ + else { \ + cvector_reserve((vec), cv_resize_count__); \ + cvector_set_size((vec), cv_resize_count__); \ + for (size_t i = 0; i < cv_resize_count__; i++) \ + (vec)[i] = (value); \ + } \ } while (0) #endif /* CVECTOR_H_ */