42 lines
1.6 KiB
Diff
42 lines
1.6 KiB
Diff
# HG changeset patch
|
|
# User Gael Guennebaud <g.gael@free.fr>
|
|
# Date 1372279754 -7200
|
|
# Node ID 21273ebd6b4d9137d29663c0ece1b683db7d3cc1
|
|
# Parent a72dae9e2650eac6f9b5be1c4e506560f8e2eb17
|
|
Fix bug 554: include unistd.h before checking the presence of posix_memalign.
|
|
|
|
diff --git a/Eigen/src/Core/util/Memory.h b/Eigen/src/Core/util/Memory.h
|
|
--- a/Eigen/src/Core/util/Memory.h
|
|
+++ b/Eigen/src/Core/util/Memory.h
|
|
@@ -53,9 +53,16 @@
|
|
#endif
|
|
|
|
-#if ((defined __QNXNTO__) || (defined _GNU_SOURCE) || ((defined _XOPEN_SOURCE) && (_XOPEN_SOURCE >= 600))) \
|
|
- && (defined _POSIX_ADVISORY_INFO) && (_POSIX_ADVISORY_INFO > 0)
|
|
- #define EIGEN_HAS_POSIX_MEMALIGN 1
|
|
-#else
|
|
+// See bug 554 (http://eigen.tuxfamily.org/bz/show_bug.cgi?id=554)
|
|
+// It seems to be unsafe to check _POSIX_ADVISORY_INFO without including unistd.h first.
|
|
+// Currently, let's include it only on unix systems:
|
|
+#if defined(__unix__) || defined(__unix)
|
|
+ #include <unistd.h>
|
|
+ #if ((defined __QNXNTO__) || (defined _GNU_SOURCE) || ((defined _XOPEN_SOURCE) && (_XOPEN_SOURCE >= 600))) && (defined _POSIX_ADVISORY_INFO) && (_POSIX_ADVISORY_INFO > 0)
|
|
+ #define EIGEN_HAS_POSIX_MEMALIGN 1
|
|
+ #endif
|
|
+#endif
|
|
+
|
|
+#ifndef EIGEN_HAS_POSIX_MEMALIGN
|
|
#define EIGEN_HAS_POSIX_MEMALIGN 0
|
|
#endif
|
|
|
|
@@ -209,7 +216,7 @@
|
|
if(posix_memalign(&result, 16, size)) result = 0;
|
|
#elif EIGEN_HAS_MM_MALLOC
|
|
result = _mm_malloc(size, 16);
|
|
-#elif defined(_MSC_VER) && (!defined(_WIN32_WCE))
|
|
+ #elif defined(_MSC_VER) && (!defined(_WIN32_WCE))
|
|
result = _aligned_malloc(size, 16);
|
|
#else
|
|
result = handmade_aligned_malloc(size);
|
|
|