From 4b5c75d1b3c012e657f50b9f58ef57bc6a901758 Mon Sep 17 00:00:00 2001 From: Tylo Date: Tue, 23 Jun 2020 23:16:11 +0200 Subject: Fixed a bug with size_t. --- stc/carray.h | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/stc/carray.h b/stc/carray.h index 214bc976..9537e028 100644 --- a/stc/carray.h +++ b/stc/carray.h @@ -49,7 +49,7 @@ int main() } */ -#define carray_xdim(a) ((a)._xdim & ~_carray_own) +#define carray_xdim(a) ((a)._xdim & _carray_sub) #define carray_ydim(a) _carray_ydim(&(a)._yxdim) #define carray_zdim(a) ((a)._zdim) #define carray1_size(a) carray_xdim(a) @@ -57,10 +57,11 @@ int main() #define carray3_size(a) _carray3_size(&(a)._zdim) -enum {_carray_own = 1ull << ((sizeof(size_t) << 3) - 1)}; +#define _carray_own (1ull << ((sizeof(size_t) << 3) - 1)) +#define _carray_sub (~_carray_own) static inline size_t _carray_ydim(const size_t* yxdim) { - return yxdim[0] / (yxdim[-1] & ~_carray_own); + return yxdim[0] / (yxdim[-1] & _carray_sub); } static inline size_t _carray3_size(const size_t* zdim) { return zdim[0] * zdim[-1]; @@ -91,18 +92,18 @@ static inline size_t _carray3_size(const size_t* zdim) { \ static inline void \ carray1_##tag##_destroy(CArray1_##tag* self) { \ - const size_t n = carray1_size(*self); Value* a = self->data; \ - if (self->_xdim & _carray_own) {for (size_t i=0; idata; \ + if (self->_xdim & _carray_own) {while (n--) valueDestroy(&a[n]); free(a);} \ } \ static inline void \ carray2_##tag##_destroy(CArray2_##tag* self) { \ - const size_t n = carray2_size(*self); Value* a = self->data; \ - if (self->_xdim & _carray_own) {for (size_t i=0; idata; \ + if (self->_xdim & _carray_own) {while (n--) valueDestroy(&a[n]); free(a);} \ } \ static inline void \ carray3_##tag##_destroy(CArray3_##tag* self) { \ - const size_t n = carray3_size(*self); Value* a = self->data; \ - if (self->_xdim & _carray_own) {for (size_t i=0; idata; \ + if (self->_xdim & _carray_own) {while (n--) valueDestroy(&a[n]); free(a);} \ } \ \ static inline CArray1_##tag \ @@ -114,7 +115,7 @@ static inline size_t _carray3_size(const size_t* zdim) { } \ static inline CArray2_##tag \ carray2_##tag##_make(size_t ydim, size_t xdim, Value val) { \ - size_t n = ydim * xdim; \ + const size_t n = ydim * xdim; \ Value* m = c_new_N(Value, n); \ for (size_t i=0; i