]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Improve algorithm a bit by adding a safety check. Fix one bug where we referenced...
authorkayser-herold <kayser-herold@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 27 Jul 2006 21:48:12 +0000 (21:48 +0000)
committerkayser-herold <kayser-herold@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 27 Jul 2006 21:48:12 +0000 (21:48 +0000)
git-svn-id: https://svn.dealii.org/trunk@13461 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/source/dofs/hp_dof_objects.cc

index 39ab7eb8c4b050fcfa072a78d69e3126ec00b756..498acfd3167e736b9ea76650c370c743b0d5d698 100644 (file)
@@ -467,11 +467,16 @@ namespace internal
          Assert (*pointer != deal_II_numbers::invalid_unsigned_int,
                  ExcInternalError());
 
+         const unsigned int fe_index = *pointer;
+
+         Assert (fe_index < dof_handler.get_fe().size(),
+                 ExcInternalError());
+         
          if (counter == n)
-           return *pointer;
+           return fe_index;
          
          ++counter;
-         pointer += dof_handler.get_fe()[*pointer].dofs_per_line + 1;
+         pointer += dof_handler.get_fe()[fe_index].dofs_per_line + 1;
        }
     }
     
@@ -767,11 +772,16 @@ namespace internal
          Assert (*pointer != deal_II_numbers::invalid_unsigned_int,
                  ExcInternalError());
 
+         const unsigned int fe_index = *pointer;
+
+         Assert (fe_index < dof_handler.get_fe().size(),
+                 ExcInternalError());
+         
          if (counter == n)
-           return *pointer;
+           return fe_index;
          
          ++counter;
-         pointer += dof_handler.get_fe()[*pointer].dofs_per_line + 1;
+         pointer += dof_handler.get_fe()[fe_index].dofs_per_line + 1;
        }
     }
 
@@ -1270,11 +1280,16 @@ namespace internal
          Assert (*pointer != deal_II_numbers::invalid_unsigned_int,
                  ExcInternalError());
 
+         const unsigned int fe_index = *pointer;
+
+         Assert (fe_index < dof_handler.get_fe().size(),
+                 ExcInternalError());
+         
          if (counter == n)
-           return *pointer;
+           return fe_index;
          
          ++counter;
-         pointer += dof_handler.get_fe()[*pointer].dofs_per_line + 1;
+         pointer += dof_handler.get_fe()[fe_index].dofs_per_quad + 1;
        }
     }
 

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.