From 986f60127d9a44891cdce2abad7ae17f504bd35d Mon Sep 17 00:00:00 2001 From: Jitse Niesen Date: Wed, 20 Feb 2013 14:03:14 +0000 Subject: [PATCH] Guard against transposeInPlace on non-square non-resizable matrix. Inspired by question by Martin Drozdik at stackoverflow.com/q/14954983 --- Eigen/src/Core/Transpose.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Eigen/src/Core/Transpose.h b/Eigen/src/Core/Transpose.h index 34944e055..2bc828e19 100644 --- a/Eigen/src/Core/Transpose.h +++ b/Eigen/src/Core/Transpose.h @@ -278,7 +278,7 @@ struct inplace_transpose_selector { // non square matrix * m = m.transpose().eval(); * \endcode * and is faster and also safer because in the latter line of code, forgetting the eval() results - * in a bug caused by aliasing. + * in a bug caused by \ref TopicAliasing "aliasing". * * Notice however that this method is only useful if you want to replace a matrix by its own transpose. * If you just need the transpose of a matrix, use transpose(). @@ -289,6 +289,8 @@ struct inplace_transpose_selector { // non square matrix template inline void DenseBase::transposeInPlace() { + eigen_assert((rows() == cols() || (RowsAtCompileTime == Dynamic && ColsAtCompileTime == Dynamic)) + && "transposeInPlace() called on a non-square non-resizable matrix"); internal::inplace_transpose_selector::run(derived()); }