]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
fix crash in ConstraintMatrix constructor taking IndexSet (release mode only)
authorheister <heister@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 27 Sep 2013 12:48:12 +0000 (12:48 +0000)
committerheister <heister@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 27 Sep 2013 12:48:12 +0000 (12:48 +0000)
git-svn-id: https://svn.dealii.org/trunk@30977 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/doc/news/changes.h
deal.II/include/deal.II/lac/constraint_matrix.h
deal.II/source/lac/constraint_matrix.cc

index 50ee4dca19ea09e4685706e610fe6e028e99e22e..28389d0e3b56c135e3bbf3645161524083d7567d 100644 (file)
@@ -85,6 +85,13 @@ inconvenience this causes.
 <h3>Specific improvements</h3>
 
 <ol>
+  <li>
+  Fixed: ConstraintMatrix would not compress() the IndexSet in the constructor
+  leading to crashes that only happen in release mode. This is now fixed.
+  <br>
+  (Timo Heister, 2013/09/27)
+  </li>
+
   <li>
   Fixed: PetscWrappers::MatrixBase::row_length() no longer worked after recent changes
   to PETSc (around PETSc release 3.4). This is now fixed.
index 7d5ae2e78bf28db6d76ef814d4d7033aa6896e73..4bb240c83c686b872d604c844a263cc7bdae62cd 100644 (file)
@@ -1850,7 +1850,12 @@ ConstraintMatrix::ConstraintMatrix (const IndexSet &local_constraints)
   lines (),
   local_lines (local_constraints),
   sorted (false)
-{}
+{
+  // make sure the IndexSet is compressed. Otherwise this can lead to crashes
+  // that are hard to find (only happen in release mode).
+  // see tests/mpi/constraint_matrix_crash_01
+  local_lines.compress();
+}
 
 
 
index 79f46bad9c46c5b1b6a7f6e6b74797a448443197..4c1a7e8facb1f97ca923f106fe3aac5a8c1c8ff1 100644 (file)
@@ -631,6 +631,12 @@ void ConstraintMatrix::clear ()
 void ConstraintMatrix::reinit (const IndexSet &local_constraints)
 {
   local_lines = local_constraints;
+
+  // make sure the IndexSet is compressed. Otherwise this can lead to crashes
+  // that are hard to find (only happen in release mode).
+  // see tests/mpi/constraint_matrix_crash_01
+  local_lines.compress();
+
   clear();
 }
 

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.