diff --git a/lib/src/array.h b/lib/src/array.h index 186ba673..15a3b233 100644 --- a/lib/src/array.h +++ b/lib/src/array.h @@ -66,9 +66,12 @@ extern "C" { /// Increase the array's size by `count` elements. /// New elements are zero-initialized. #define array_grow_by(self, count) \ - (_array__grow((Array *)(self), count, array_elem_size(self)), \ - memset((self)->contents + (self)->size, 0, (count) * array_elem_size(self)), \ - (self)->size += (count)) + do { \ + if ((count) == 0) break; \ + _array__grow((Array *)(self), count, array_elem_size(self)); \ + memset((self)->contents + (self)->size, 0, (count) * array_elem_size(self)); \ + (self)->size += (count); \ + } while (0) /// Append all elements from one array to the end of another. #define array_push_all(self, other) \