From 2e1ddabef943ff457f13eb339509bf14fe7c9aee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Oberhuber?= <oberhuber.tomas@gmail.com>
Date: Fri, 27 Dec 2019 20:31:39 +0100
Subject: [PATCH] Fixed sparse matrix assignment operator.

---
 src/TNL/Matrices/SparseMatrix.hpp             |  4 +-
 src/UnitTests/Matrices/SparseMatrixCopyTest.h | 53 +++++++++----------
 2 files changed, 27 insertions(+), 30 deletions(-)

diff --git a/src/TNL/Matrices/SparseMatrix.hpp b/src/TNL/Matrices/SparseMatrix.hpp
index 75f505f5f4..68f33b93e3 100644
--- a/src/TNL/Matrices/SparseMatrix.hpp
+++ b/src/TNL/Matrices/SparseMatrix.hpp
@@ -687,8 +687,7 @@ operator=( const SparseMatrix& matrix )
    Matrix< Real, Device, Index >::operator=( matrix );
    this->columnIndexes = matrix.columnIndexes;
    this->segments = matrix.segments;
-   this->indexAllocator = matrix.indexAllocator;
-   this->realAllocator = matrix.realAllocator;
+   return *this;
 }
 
 // cross-device copy assignment
@@ -797,6 +796,7 @@ operator=( const SparseMatrix< Real2, Segments2, Device2, Index2, RealAllocator2
       }
       //std::cerr << "This matrix = " << std::endl << *this << std::endl;
    }
+   return *this;
 }
 
 template< typename Real,
diff --git a/src/UnitTests/Matrices/SparseMatrixCopyTest.h b/src/UnitTests/Matrices/SparseMatrixCopyTest.h
index e3fb505d30..34ffd600de 100644
--- a/src/UnitTests/Matrices/SparseMatrixCopyTest.h
+++ b/src/UnitTests/Matrices/SparseMatrixCopyTest.h
@@ -360,38 +360,35 @@ template< typename Matrix1, typename Matrix2 >
 void testCopyAssignment()
 {
    {
-        SCOPED_TRACE("Tri Diagonal Matrix");
-        
-        Matrix1 triDiag1;
-        setupTriDiagMatrix( triDiag1 );
-        checkTriDiagMatrix( triDiag1 );
-        
-        Matrix2 triDiag2;
-        triDiag2 = triDiag1;
-        checkTriDiagMatrix( triDiag2 );
+      SCOPED_TRACE("Tri Diagonal Matrix");
+
+      Matrix1 triDiag1;
+      setupTriDiagMatrix( triDiag1 );
+      checkTriDiagMatrix( triDiag1 );
+
+      Matrix2 triDiag2;
+      triDiag2 = triDiag1;
+      checkTriDiagMatrix( triDiag2 );
    }
-   
    {
-        SCOPED_TRACE("Anti Tri Diagonal Matrix");
-                
-        Matrix1 antiTriDiag1;
-        setupAntiTriDiagMatrix( antiTriDiag1 );
-        checkAntiTriDiagMatrix( antiTriDiag1 );
-        
-        Matrix2 antiTriDiag2;
-        antiTriDiag2 = antiTriDiag1;
-        checkAntiTriDiagMatrix( antiTriDiag2 );
+      SCOPED_TRACE("Anti Tri Diagonal Matrix");
+      Matrix1 antiTriDiag1;
+      setupAntiTriDiagMatrix( antiTriDiag1 );
+      checkAntiTriDiagMatrix( antiTriDiag1 );
+
+      Matrix2 antiTriDiag2;
+      antiTriDiag2 = antiTriDiag1;
+      checkAntiTriDiagMatrix( antiTriDiag2 );
    }
-   
    {
-        SCOPED_TRACE("Uneven Row Size Matrix");
-        Matrix1 unevenRowSize1;
-        setupUnevenRowSizeMatrix( unevenRowSize1 );
-        checkUnevenRowSizeMatrix( unevenRowSize1 );
-        
-        Matrix2 unevenRowSize2;
-        unevenRowSize2 = unevenRowSize1;
-        checkUnevenRowSizeMatrix( unevenRowSize2 );
+      SCOPED_TRACE("Uneven Row Size Matrix");
+      Matrix1 unevenRowSize1;
+      setupUnevenRowSizeMatrix( unevenRowSize1 );
+      checkUnevenRowSizeMatrix( unevenRowSize1 );
+
+      Matrix2 unevenRowSize2;
+      unevenRowSize2 = unevenRowSize1;
+      checkUnevenRowSizeMatrix( unevenRowSize2 );
    }
 }
 
-- 
GitLab