getfem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Getfem-commits] r5123 - in /trunk/getfem: interface/src/ src/ src/getfe


From: logari81
Subject: [Getfem-commits] r5123 - in /trunk/getfem: interface/src/ src/ src/getfem/
Date: Wed, 04 Nov 2015 22:40:14 -0000

Author: logari81
Date: Wed Nov  4 23:40:14 2015
New Revision: 5123

URL: http://svn.gna.org/viewcvs/getfem?rev=5123&view=rev
Log:
avoid uninitialized variables and dangling pointers

Modified:
    trunk/getfem/interface/src/gf_mesh_set.cc
    trunk/getfem/src/getfem/getfem_generic_assembly.h
    trunk/getfem/src/getfem_contact_and_friction_common.cc
    trunk/getfem/src/getfem_generic_assembly.cc

Modified: trunk/getfem/interface/src/gf_mesh_set.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/interface/src/gf_mesh_set.cc?rev=5123&r1=5122&r2=5123&view=diff
==============================================================================
--- trunk/getfem/interface/src/gf_mesh_set.cc   (original)
+++ trunk/getfem/interface/src/gf_mesh_set.cc   Wed Nov  4 23:40:14 2015
@@ -59,24 +59,24 @@
 }
 
 static void intersect_regions(getfem::mesh &mesh, getfemint::mexargs_in& in) {
-  unsigned ir1 = in.pop().to_integer(1,100000);
-  unsigned ir2 = in.pop().to_integer(1,100000);
+  unsigned ir1 = in.pop().to_integer(1,1000000);
+  unsigned ir2 = in.pop().to_integer(1,1000000);
   getfem::mesh_region &r1 = mesh.region(ir1);
   getfem::mesh_region &r2 = mesh.region(ir2);
   r1 = getfem::mesh_region::intersection(r1, r2);
 }
 
 static void merge_regions(getfem::mesh &mesh, getfemint::mexargs_in& in) {
-  unsigned ir1 = in.pop().to_integer(1,100000);
-  unsigned ir2 = in.pop().to_integer(1,100000);
+  unsigned ir1 = in.pop().to_integer(1,1000000);
+  unsigned ir2 = in.pop().to_integer(1,1000000);
   getfem::mesh_region &r1 = mesh.region(ir1);
   getfem::mesh_region &r2 = mesh.region(ir2);
   r1 = getfem::mesh_region::merge(r1, r2);
 }
 
 static void subtract_regions(getfem::mesh &mesh, getfemint::mexargs_in& in) {
-  unsigned ir1 = in.pop().to_integer(1,100000);
-  unsigned ir2 = in.pop().to_integer(1,100000);
+  unsigned ir1 = in.pop().to_integer(1,1000000);
+  unsigned ir2 = in.pop().to_integer(1,1000000);
   getfem::mesh_region &r1 = mesh.region(ir1);
   getfem::mesh_region &r2 = mesh.region(ir2);
   r1 = getfem::mesh_region::subtract(r1, r2);

Modified: trunk/getfem/src/getfem/getfem_generic_assembly.h
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem/getfem_generic_assembly.h?rev=5123&r1=5122&r2=5123&view=diff
==============================================================================
--- trunk/getfem/src/getfem/getfem_generic_assembly.h   (original)
+++ trunk/getfem/src/getfem/getfem_generic_assembly.h   Wed Nov  4 23:40:14 2015
@@ -88,7 +88,7 @@
     { tab[name] = pt; }
     ~ga_predef_operator_tab() {
       for (T::iterator it = tab.begin(); it != tab.end(); ++it)
-        delete it->second;
+        { delete it->second; it->second = 0; }
     }
   };
 
@@ -166,7 +166,10 @@
       const mesh_region *rg;
       ga_tree *ptree;
       base_vector elem;
-      tree_description() : ptree(0) {}
+      tree_description()
+        : name_test1(""), name_test2(""),
+          interpolate_name_test1(""), interpolate_name_test2(""),
+          mim(0), m(0), rg(0), ptree(0), elem(0) {}
       void copy(const tree_description& td);
       tree_description(const tree_description& td) { copy(td); }
       tree_description &operator =(const tree_description& td);
@@ -203,7 +206,7 @@
       ga_tree *ptree;
       size_type meshdim;
       bool ignore_X;
-      m_tree() : ptree(0) {}
+      m_tree() : ptree(0), meshdim(-1), ignore_X(false) {}
       m_tree(const m_tree& o);
       m_tree &operator =(const m_tree& o);
       ~m_tree();
@@ -236,7 +239,7 @@
         if (todelete) ptr = new model_real_sparse_matrix(smp());
         return *this;
       }
-      ~sparse_matrix_ptr() { if (todelete) delete ptr; }
+      ~sparse_matrix_ptr() { if (todelete) delete ptr; ptr = 0; }
     };
 
     struct base_vector_ptr {
@@ -259,7 +262,7 @@
         if (todelete) ptr = new base_vector(smp());
         return *this;
       }
-      ~base_vector_ptr() { if (todelete) delete ptr; }
+      ~base_vector_ptr() { if (todelete) delete ptr; ptr = 0; }
     };
 
     sparse_matrix_ptr K;
@@ -571,7 +574,7 @@
     mutable ga_instruction_set *gis;
 
   public:
-    ga_function() : gis(0) {}
+    ga_function() : local_workspace(), expr(""), gis(0) {}
     ga_function(const model &md, const std::string &e);
     ga_function(const ga_workspace &workspace_, const std::string &e);
     ga_function(const std::string &e);

Modified: trunk/getfem/src/getfem_contact_and_friction_common.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_contact_and_friction_common.cc?rev=5123&r1=5122&r2=5123&view=diff
==============================================================================
--- trunk/getfem/src/getfem_contact_and_friction_common.cc      (original)
+++ trunk/getfem/src/getfem_contact_and_friction_common.cc      Wed Nov  4 
23:40:14 2015
@@ -1327,7 +1327,8 @@
       mutable model_real_plain_vector U_unred; // Unreduced displacement
       bool slave;
  
-      contact_boundary() {}
+      contact_boundary()
+        : region(-1), mfu(0), dispname(""), U(0), U_unred(0), slave(false) {}
       contact_boundary(size_type r, const mesh_fem *mf, const std::string dn,
                        bool sl)
         : region(r), mfu(mf), dispname(dn), slave(sl) {}
@@ -1338,7 +1339,8 @@
       size_type ind_element;   // Element number
       short_type ind_face;     // Face number in element
       base_small_vector mean_normal;   // Mean outward normal unit vector
-      face_box_info() {}
+      face_box_info()
+        : ind_boundary(-1), ind_element(-1), ind_face(-1), mean_normal(0) {}
       face_box_info(size_type ib, size_type ie,
                     short_type iff, const base_small_vector &n)
         : ind_boundary(ib), ind_element(ie), ind_face(iff), mean_normal(n) {}

Modified: trunk/getfem/src/getfem_generic_assembly.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_generic_assembly.cc?rev=5123&r1=5122&r2=5123&view=diff
==============================================================================
--- trunk/getfem/src/getfem_generic_assembly.cc (original)
+++ trunk/getfem/src/getfem_generic_assembly.cc Wed Nov  4 23:40:14 2015
@@ -469,23 +469,28 @@
     }
 
     ga_tree_node(void)
-      : node_type(GA_NODE_VOID), test_function_type(size_type(-1)), qdim1(0),
-        qdim2(0), pos(0), der1(0), der2(0), symmetric_op(false), hash_value(0) 
{}
+      : node_type(GA_NODE_VOID), test_function_type(-1),
+        qdim1(0), qdim2(0), nbc1(0), nbc2(0), nbc3(0),
+        pos(0), der1(0), der2(0), symmetric_op(false), hash_value(0) {}
     ga_tree_node(GA_NODE_TYPE ty, size_type p)
-      : node_type(ty), test_function_type(size_type(-1)), qdim1(0), qdim2(0),
+      : node_type(ty), test_function_type(-1),
+        qdim1(0), qdim2(0), nbc1(0), nbc2(0), nbc3(0),
         pos(p), der1(0), der2(0), symmetric_op(false), hash_value(0) {}
     ga_tree_node(scalar_type v, size_type p)
-      : node_type(GA_NODE_CONSTANT), test_function_type(size_type(-1)),
-        qdim1(0), qdim2(0), pos(p), der1(0), der2(0), symmetric_op(false),
+      : node_type(GA_NODE_CONSTANT), test_function_type(-1),
+        qdim1(0), qdim2(0), nbc1(0), nbc2(0), nbc3(0),
+        pos(p), der1(0), der2(0), symmetric_op(false),
         hash_value(0)
     { init_scalar_tensor(v); }
     ga_tree_node(const char *n, size_type l, size_type p)
-      : node_type(GA_NODE_NAME), test_function_type(size_type(-1)), qdim1(0),
-        qdim2(0), pos(p), name(n, l), der1(0), der2(0), symmetric_op(false),
+      : node_type(GA_NODE_NAME), test_function_type(-1),
+        qdim1(0), qdim2(0), nbc1(0), nbc2(0), nbc3(0),
+        pos(p), name(n, l), der1(0), der2(0), symmetric_op(false),
         hash_value(0) {}
     ga_tree_node(GA_TOKEN_TYPE op, size_type p)
-      : node_type(GA_NODE_OP), test_function_type(size_type(-1)), qdim1(0),
-        qdim2(0), pos(p), der1(0), der2(0), op_type(op), symmetric_op(false),
+      : node_type(GA_NODE_OP), test_function_type(-1),
+        qdim1(0), qdim2(0), nbc1(0), nbc2(0), nbc3(0),
+        pos(p), der1(0), der2(0), op_type(op), symmetric_op(false),
         hash_value(0) {}
 
   };
@@ -918,14 +923,14 @@
 
     if (version && ntype1 == GA_NODE_OP && pnode1->symmetric_op) {
       if (sub_tree_are_equal(pnode1->children[0], pnode2->children[0],
-                                 workspace, version) &&
+                             workspace, version) &&
           sub_tree_are_equal(pnode1->children[1], pnode2->children[1],
-                                 workspace, version))
+                             workspace, version))
         return true;
       if (sub_tree_are_equal(pnode1->children[1], pnode2->children[0],
-                                 workspace, version) &&
+                             workspace, version) &&
           sub_tree_are_equal(pnode1->children[0], pnode2->children[1],
-                                 workspace, version) )
+                             workspace, version) )
         return true;
       return false;
     } else {
@@ -1930,8 +1935,10 @@
       std::map<scalar_type, std::list<pga_tree_node> > node_list;
 
       ~region_mim_instructions(void) {
-        for (size_type i = 0; i < instructions.size(); ++i)
+        for (size_type i = 0; i < instructions.size(); ++i) {
           delete instructions[i];
+          instructions[i] = 0;
+        }
       }
       region_mim_instructions(void): m(0) {}
     };
@@ -3426,7 +3433,7 @@
         return 0;
       const std::string &varname
         = inin.m ? workspace.variable_in_group(gname, *(inin.m))
-        : workspace.first_variable_of_group(gname);
+                 : workspace.first_variable_of_group(gname);
       vgi.mf = workspace.associated_mf(varname);
       vgi.Ir = gis.var_intervals[varname];
       vgi.In = workspace.interval_of_variable(varname);
@@ -5603,9 +5610,9 @@
 
   ga_workspace::tree_description &ga_workspace::tree_description::operator =
   (const ga_workspace::tree_description& td)
-  { if (ptree) delete ptree; copy(td); return *this; }
+  { if (ptree) delete ptree; ptree = 0; copy(td); return *this; }
   ga_workspace::tree_description::~tree_description()
-  { if (ptree) delete ptree; }
+  { if (ptree) delete ptree; ptree = 0; }
 
   //=========================================================================
   // Some hash code functions for node identification
@@ -6104,7 +6111,7 @@
 
         if (ndt == 1) {
           if (!(workspace.interpolate_transformation_exists
-                        (pnode->interpolate_name)))  {
+                (pnode->interpolate_name)))  {
             ga_throw_error(expr, pnode->pos,
                            "Unknown interpolate transformation");
           }
@@ -7025,9 +7032,8 @@
               workspace.test1.insert
                 (var_trans_pair(pnode->name_test1,
                                 pnode->interpolate_name_test1));
-            pnode->qdim1
-              = (mf ? workspace.qdim(name)
-                 : gmm::vect_size(workspace.value(name)));
+            pnode->qdim1 = mf ? workspace.qdim(name)
+                              : gmm::vect_size(workspace.value(name));
             if (!(pnode->qdim1))
               ga_throw_error(expr, pnode->pos,
                              "Invalid null size of variable");
@@ -7038,9 +7044,8 @@
               workspace.test2.insert
                 (var_trans_pair(pnode->name_test2,
                                 pnode->interpolate_name_test2));
-            pnode->qdim2
-              = (mf ? workspace.qdim(name)
-                    : gmm::vect_size(workspace.value(name)));
+            pnode->qdim2 = mf ? workspace.qdim(name)
+                              : gmm::vect_size(workspace.value(name));
             if (!(pnode->qdim2))
               ga_throw_error(expr, pnode->pos,
                              "Invalid null size of variable");
@@ -10602,7 +10607,7 @@
     return *this;
   }
 
-  ga_function::~ga_function() { if (gis) delete gis; }
+  ga_function::~ga_function() { if (gis) delete gis; gis = 0; }
 
   const base_tensor &ga_function::eval(void) const {
     GMM_ASSERT1(gis, "Uncompiled function");




reply via email to

[Prev in Thread] Current Thread [Next in Thread]