fix bug #219: Map Flags AlignedBit was miscomputed, didn't account for EIGEN_ALIGN
diff --git a/Eigen/src/Core/Map.h b/Eigen/src/Core/Map.h index b40bc2a..692d0a1 100644 --- a/Eigen/src/Core/Map.h +++ b/Eigen/src/Core/Map.h
@@ -95,7 +95,7 @@ HasNoInnerStride = InnerStrideAtCompileTime == 1, HasNoOuterStride = StrideType::OuterStrideAtCompileTime == 0, HasNoStride = HasNoInnerStride && HasNoOuterStride, - IsAligned = int(int(MapOptions)&Aligned)==Aligned, + IsAligned = bool(EIGEN_ALIGN) && ((int(MapOptions)&Aligned)==Aligned), IsDynamicSize = PlainObjectType::SizeAtCompileTime==Dynamic, KeepsPacketAccess = bool(HasNoInnerStride) && ( bool(IsDynamicSize)
diff --git a/test/dontalign.cpp b/test/dontalign.cpp index 6ef2761..57ed473 100644 --- a/test/dontalign.cpp +++ b/test/dontalign.cpp
@@ -53,6 +53,11 @@ v = square * v; v = a.adjoint() * v; VERIFY(square.determinant() != Scalar(0)); + + // bug 219: MapAligned() was giving an assert with EIGEN_DONT_ALIGN, because Map Flags were miscomputed + Scalar* array = internal::aligned_new<Scalar>(rows); + v = VectorType::MapAligned(array, rows); + internal::aligned_delete(array, rows); } void test_dontalign()