On Windows/MSVC, I get an abort() on line 85: ASSERT (((uintptr_t) aligned16_blocks[i] % 16) == 0);
m4/malloc-align.m4 indicates that MALLOC_ALIGN should be 8 or 16. But all (?) Windows targets do have the '_aligned_malloc()' [1] function which is found nowhere. So patching like this, test-aligned-malloc succeeds: --- a/lib/aligned-malloc.h 2020-07-26 18:38:46 +++ b/lib/aligned-malloc.h 2020-10-19 12:00:40 @@ -117,8 +117,29 @@ { free (q); } +# endif + +# elif HAVE__ALIGNED_MALLOC /* MSVC, clang, MinGW */ +/* Use _aligned_malloc(). */ + +#include <malloc.h> + +static inline void * +aligned_malloc (size_t size) +{ + return _aligned_malloc (size, ALIGNMENT); +} + +# ifdef aligned_free + /* The caller wants an inline function, not a macro. */ +static inline void +aligned_free (void *q) +{ + _aligned_free (q); +} + # else -# define aligned_free free +# define aligned_free _aligned_free # endif #else ----- And having: #define MALLOC_ALIGNMENT 8 /* 2*sizeof(void*) in my case */ #define HAVE__ALIGNED_MALLOC 1 in my 'config.h'. [1]: https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/aligned-malloc?view=vs-2019 -- --gv