[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Assert in test-aligned-malloc.c
From: |
Gisle Vanem |
Subject: |
Assert in test-aligned-malloc.c |
Date: |
Mon, 19 Oct 2020 12:16:34 +0200 |
User-agent: |
Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 |
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
- Assert in test-aligned-malloc.c,
Gisle Vanem <=