From 1dfe50cea6632fe14d7748d8e05371e2d7871f1c Mon Sep 17 00:00:00 2001 From: kronbichler Date: Tue, 4 Nov 2008 13:37:21 +0000 Subject: [PATCH] Fix a memory leak in the block matrix. git-svn-id: https://svn.dealii.org/trunk@17467 0785d39b-7218-0410-832d-ea1e28bc413d --- .../source/trilinos_block_sparse_matrix.cc | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/deal.II/lac/source/trilinos_block_sparse_matrix.cc b/deal.II/lac/source/trilinos_block_sparse_matrix.cc index 6c82722086..ecb2efeac3 100644 --- a/deal.II/lac/source/trilinos_block_sparse_matrix.cc +++ b/deal.II/lac/source/trilinos_block_sparse_matrix.cc @@ -27,7 +27,18 @@ namespace TrilinosWrappers BlockSparseMatrix::~BlockSparseMatrix () - {} + { + // delete previous content of + // the subobjects array + for (unsigned int r=0; rn_block_rows(); ++r) + for (unsigned int c=0; cn_block_cols(); ++c) + { + BlockType *p = this->sub_objects[r][c]; + this->sub_objects[r][c] = 0; + delete p; + } + + } @@ -104,17 +115,14 @@ namespace TrilinosWrappers const unsigned int n_block_rows = input_maps.size(); - if (input_maps[0].Comm().MyPID()==0) - { - Assert (n_block_rows == block_sparsity_pattern.n_block_rows(), - ExcDimensionMismatch (n_block_rows, - block_sparsity_pattern.n_block_rows())); - Assert (n_block_rows == block_sparsity_pattern.n_block_cols(), - ExcDimensionMismatch (n_block_rows, - block_sparsity_pattern.n_block_cols())); - } + Assert (n_block_rows == block_sparsity_pattern.n_block_rows(), + ExcDimensionMismatch (n_block_rows, + block_sparsity_pattern.n_block_rows())); + Assert (n_block_rows == block_sparsity_pattern.n_block_cols(), + ExcDimensionMismatch (n_block_rows, + block_sparsity_pattern.n_block_cols())); - // Call the other basic reinit function ... + // Call the other basic reinit function... reinit (n_block_rows, n_block_rows); // ... and then assign the correct -- 2.39.5