From 763f0a24344139969990009aec018c54bb97b4da Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Mon, 15 Dec 2008 17:55:11 +0000 Subject: [PATCH] use ei_aligned_malloc and ei_aligned_free also in WithAlignedOperatorNew, so this too should now work with MSVC. --- Eigen/src/Core/util/Memory.h | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/Eigen/src/Core/util/Memory.h b/Eigen/src/Core/util/Memory.h index 682494c97..ab2b87bc5 100644 --- a/Eigen/src/Core/util/Memory.h +++ b/Eigen/src/Core/util/Memory.h @@ -27,9 +27,11 @@ #define EIGEN_MEMORY_H #ifdef EIGEN_VECTORIZE +#ifndef _MSC_VER // it seems we cannot assume posix_memalign is defined in the stdlib header extern "C" int posix_memalign (void **, size_t, size_t) throw (); #endif +#endif /** \internal * Static array automatically aligned if the total byte size is a multiple of 16 @@ -165,24 +167,16 @@ struct WithAlignedOperatorNew void *operator new(size_t size) throw() { - void* ptr = 0; - if (posix_memalign(&ptr, 16, size)==0) - return ptr; - else - return 0; + return ei_aligned_malloc(size); } void *operator new[](size_t size) throw() { - void* ptr = 0; - if (posix_memalign(&ptr, 16, size)==0) - return ptr; - else - return 0; + return ei_aligned_malloc(size); } - void operator delete(void * ptr) { free(ptr); } - void operator delete[](void * ptr) { free(ptr); } + void operator delete(void * ptr) { ei_aligned_free(static_cast(ptr)); } + void operator delete[](void * ptr) { ei_aligned_free(static_cast(ptr)); } #endif };