From c58df317473277b297dd018a2dc3d8fe85b00c92 Mon Sep 17 00:00:00 2001 From: Benoit Steiner Date: Tue, 21 Jun 2016 09:22:43 -0700 Subject: Handle empty tensors in the print functions --- unsupported/Eigen/CXX11/src/Tensor/TensorIO.h | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'unsupported/Eigen/CXX11/src/Tensor/TensorIO.h') diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h b/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h index 3db692ac6..58ffaefab 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h @@ -26,10 +26,15 @@ struct TensorPrinter { typedef typename internal::remove_const::type Scalar; typedef typename Tensor::Index Index; const Index total_size = internal::array_prod(tensor.dimensions()); - const Index first_dim = Eigen::internal::array_get<0>(tensor.dimensions()); - static const int layout = Tensor::Layout; - Map > matrix(const_cast(tensor.data()), first_dim, total_size/first_dim); - os << matrix; + if (total_size == 0) { + os << "Empty tensor of rank " << Rank; + } + else { + const Index first_dim = Eigen::internal::array_get<0>(tensor.dimensions()); + static const int layout = Tensor::Layout; + Map > matrix(const_cast(tensor.data()), first_dim, total_size/first_dim); + os << matrix; + } } }; @@ -41,8 +46,13 @@ struct TensorPrinter { typedef typename internal::remove_const::type Scalar; typedef typename Tensor::Index Index; const Index total_size = internal::array_prod(tensor.dimensions()); - Map > array(const_cast(tensor.data()), total_size); - os << array; + if (total_size == 0) { + os << "Empty tensor of rank 1"; + } + else { + Map > array(const_cast(tensor.data()), total_size); + os << array; + } } }; -- cgit v1.2.3