getfem-commits
[Top][All Lists]
Advanced

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

[Getfem-commits] [getfem-commits] branch master updated: minor modificat


From: Yves Renard
Subject: [Getfem-commits] [getfem-commits] branch master updated: minor modification for clang compatibility
Date: Wed, 13 Dec 2023 07:55:12 -0500

This is an automated email from the git hooks/post-receive script.

renard pushed a commit to branch master
in repository getfem.

The following commit(s) were added to refs/heads/master by this push:
     new 3c37cc1a minor modification for clang compatibility
3c37cc1a is described below

commit 3c37cc1a5019b7dce6d2f5eb6c0bc4e60a8d1ca3
Author: Renard Yves <yves.renard@insa-lyon.fr>
AuthorDate: Wed Dec 13 13:49:15 2023 +0100

    minor modification for clang compatibility
---
 contrib/bimaterial_crack_test/crack.cc             |  16 ++--
 contrib/crack_plate/crack_bilaplacian_moment.cc    |  14 +--
 contrib/delaminated_crack/delaminated_crack.cc     |   2 +-
 contrib/icare/icare.cc                             |  26 +++---
 contrib/opt_assembly/opt_assembly.cc               |   4 +-
 .../xfem_stab_unilat_contact.cc                    |  16 ++--
 interface/src/gf_slice_get.cc                      |   2 +-
 src/getfem/dal_basic.h                             |   6 ++
 src/getfem/dal_bit_vector.h                        |   8 ++
 src/getfem/dal_tas.h                               |   8 +-
 src/getfem/getfem_generic_assembly.h               |   4 +-
 src/getfem/getfem_mesh_fem.h                       |   6 +-
 src/getfem_contact_and_friction_large_sliding.cc   |  12 +--
 src/getfem_fem.cc                                  |   4 +-
 src/getfem_mesh_level_set.cc                       |   4 +-
 src/getfem_mesher.cc                               |   2 +-
 src/gmm/gmm_conjugated.h                           |  10 ++-
 src/gmm/gmm_interface.h                            |   8 +-
 src/gmm/gmm_real_part.h                            |   4 +
 src/gmm/gmm_ref.h                                  |  18 ++++
 src/gmm/gmm_scaled.h                               |  14 ++-
 src/gmm/gmm_std.h                                  |   6 +-
 src/gmm/gmm_sub_matrix.h                           |   8 +-
 src/gmm/gmm_sub_vector.h                           |   4 +-
 src/gmm/gmm_vector.h                               |   8 ++
 src/gmm/gmm_vector_to_matrix.h                     |   8 +-
 tests/crack.cc                                     |  16 ++--
 tests/heat_equation.cc                             |   2 +-
 tests/integration.cc                               | 100 ++++++++++-----------
 tests/nonlinear_elastostatic.cc                    |   2 +-
 tests/poly.cc                                      |   6 +-
 tests/schwarz_additive.cc                          |   2 +-
 tests/test_assembly.cc                             |   4 +-
 tests/test_continuation.cc                         |  10 +--
 tests/test_interpolated_fem.cc                     |  32 +++----
 tests/test_mat_elem.cc                             |  64 ++++++-------
 tests/wave_equation.cc                             |   2 +-
 37 files changed, 274 insertions(+), 188 deletions(-)

diff --git a/contrib/bimaterial_crack_test/crack.cc 
b/contrib/bimaterial_crack_test/crack.cc
index 3dfa8903..01964c1c 100644
--- a/contrib/bimaterial_crack_test/crack.cc
+++ b/contrib/bimaterial_crack_test/crack.cc
@@ -148,31 +148,31 @@ struct crack_problem {
 
 std::string name_of_dof(getfem::pdof_description dof) {
   char s[200];
-  sprintf(s, "UnknownDof[%p]", (void*)dof);
+  snprintf(s, 199, "UnknownDof[%p]", (void*)dof);
   for (dim_type d = 0; d < 4; ++d) {
     if (dof == getfem::lagrange_dof(d)) {
-      sprintf(s, "Lagrange[%d]", d); goto found;
+      snprintf(s, 199, "Lagrange[%d]", d); goto found;
     }
     if (dof == getfem::normal_derivative_dof(d)) {
-      sprintf(s, "D_n[%d]", d); goto found;
+      snprintf(s, 199, "D_n[%d]", d); goto found;
     }
     if (dof == getfem::global_dof(d)) {
-      sprintf(s, "GlobalDof[%d]", d);
+      snprintf(s, 199, "GlobalDof[%d]", d);
     }
     if (dof == getfem::mean_value_dof(d)) {
-      sprintf(s, "MeanValue[%d]", d);
+      snprintf(s, 199, "MeanValue[%d]", d);
     }
     if (getfem::dof_xfem_index(dof) != 0) {
-      sprintf(s, "Xfem[idx:%d]", int(dof_xfem_index(dof)));
+      snprintf(s, 199, "Xfem[idx:%d]", int(dof_xfem_index(dof)));
     }
 
     for (dim_type r = 0; r < d; ++r) {
       if (dof == getfem::derivative_dof(d, r)) {
-        sprintf(s, "D_%c[%d]", "xyzuvw"[r], d); goto found;
+        snprintf(s, 199, "D_%c[%d]", "xyzuvw"[r], d); goto found;
       }
       for (dim_type t = 0; t < d; ++t) {
         if (dof == getfem::second_derivative_dof(d, r, t)) {
-          sprintf(s, "D2%c%c[%d]", "xyzuvw"[r], "xyzuvw"[t], d);
+          snprintf(s, 199, "D2%c%c[%d]", "xyzuvw"[r], "xyzuvw"[t], d);
           goto found;
         }
       }
diff --git a/contrib/crack_plate/crack_bilaplacian_moment.cc 
b/contrib/crack_plate/crack_bilaplacian_moment.cc
index b542ad3e..405a04e2 100644
--- a/contrib/crack_plate/crack_bilaplacian_moment.cc
+++ b/contrib/crack_plate/crack_bilaplacian_moment.cc
@@ -79,9 +79,9 @@ size_type is_dx_dof_type(getfem::pdof_description dof){
   size_type dx_dof = 0 ;
     for (unsigned r = 0; r < 2; ++r) {
       if (dof == getfem::derivative_dof(2,0)){
-         sprintf(s, "D_%c[%d]", "xyzuvw"[r], 2);
-         dx_dof = 1 ;
-        }
+        snprintf(s, 199, "D_%c[%d]", "xyzuvw"[r], 2);
+        dx_dof = 1 ;
+      }
   }
 return dx_dof ;
 }
@@ -91,10 +91,10 @@ size_type is_dy_dof_type(getfem::pdof_description dof){
   size_type dy_dof = 0 ;
     for (unsigned r = 0; r < 2; ++r) {
       if (dof == getfem::derivative_dof(2,1)){
-         sprintf(s, "D_%c[%d]", "xyzuvw"[r], 2);
-         dy_dof = 1 ;
-        cout << "passage dans is_dy_dof_type OK \n" ;
-        }
+        snprintf(s, 199, "D_%c[%d]", "xyzuvw"[r], 2);
+        dy_dof = 1 ;
+        cout << "passage dans is_dy_dof_type OK \n" ;
+      }
     }
 return dy_dof ;
 }
diff --git a/contrib/delaminated_crack/delaminated_crack.cc 
b/contrib/delaminated_crack/delaminated_crack.cc
index ec1a46e5..5f8154bd 100644
--- a/contrib/delaminated_crack/delaminated_crack.cc
+++ b/contrib/delaminated_crack/delaminated_crack.cc
@@ -428,7 +428,7 @@ void crack_problem::shape_derivative(const plain_vector &U, 
plain_vector &SD) {
 
   // derivative of elastic energy
   char s[500];
-  sprintf(s, "u=data(#1);"
+  snprintf(s, 499, "u=data(#1);"
          // "t=comp(vGrad(#1).vGrad(#1).vGrad(#2))(k,:,: ,l,:,:,:,:,:)
          // ".u(k).u(l);"
          "t=comp(vGrad(#1)(k,:,:).vGrad(#1)(l,:,:).vGrad(#2).u(k).u(l));"
diff --git a/contrib/icare/icare.cc b/contrib/icare/icare.cc
index 70f3ced0..4848f117 100644
--- a/contrib/icare/icare.cc
+++ b/contrib/icare/icare.cc
@@ -1521,12 +1521,12 @@ gmm :: sub_interval SUB_CT_P(0,nbdof_p);
     }
     if (PARAM.int_value("VTK_EXPORT")) {
       static int cnta=0;
-      char sa[128]; sprintf(sa, "SolIcare/DivUstar%d.vtk", cnta++);
+      char sa[128]; snprintf(sa, 127, "SolIcare/DivUstar%d.vtk", cnta++);
       getfem::vtk_export tata(sa, PARAM.int_value("VTK_EXPORT")==1);
       tata.exporting(mf_rhs); 
       tata.write_point_data(mf_rhs, DIV, "divergence");
 
-      char sb[128]; sprintf(sb, "SolIcare/Ustar%d.vtk", cnta++);
+      char sb[128]; snprintf(sb, 127, "SolIcare/Ustar%d.vtk", cnta++);
       getfem::vtk_export tbtb(sb, PARAM.int_value("VTK_EXPORT")==1);
       tbtb.exporting(mf_u); 
       tbtb.write_point_data(mf_u, USTAR, "Ustar");
@@ -1719,7 +1719,7 @@ gmm :: sub_interval SUB_CT_P(0,nbdof_p);
       }
     if (PARAM.int_value("VTK_EXPORT")) {
       static int cnta=0;
-      char sa[128]; sprintf(sa, "SolIcare/DivU%d.vtk", cnta++);
+      char sa[128]; snprintf(sa, 127, "SolIcare/DivU%d.vtk", cnta++);
       getfem::vtk_export tata(sa, PARAM.int_value("VTK_EXPORT")==1);
       tata.exporting(mf_rhs); 
       tata.write_point_data(mf_rhs, DIV, "divergence");
@@ -1815,7 +1815,7 @@ gmm :: sub_interval SUB_CT_P(0,nbdof_p);
     t_export += dt_export;
     
     static int cnt = 0;
-    char s[128]; sprintf(s, "SolIcare/icare.U%d", cnt++);
+    char s[128]; snprintf(s, 127, "SolIcare/icare.U%d", cnt++);
     gmm::vecsave(s, Un0);
     exp->write_point_data(mf_u, Un0);
     exp->serie_add_object("velocity");
@@ -1825,12 +1825,12 @@ gmm :: sub_interval SUB_CT_P(0,nbdof_p);
     exp->serie_add_object("pressure");
   
     static int cntp=0;
-    char sp[128]; sprintf(sp, "SolIcare/icare.P%d", cntp++);
+    char sp[128]; snprintf(sp, 127, "SolIcare/icare.P%d", cntp++);
     gmm::vecsave(sp, Pn0);
     
     if (PARAM.int_value("TIME_ORDER")==2){
       static int cntm1 = 0;
-      char sm1[128]; sprintf(sm1, "SolIcare/icare.Um%d", cntm1++);
+      char sm1[128]; snprintf(sm1, 127, "SolIcare/icare.Um%d", cntm1++);
       gmm::vecsave(sm1, Unm1);
       exp->write_point_data(mf_u, Unm1);
       exp->serie_add_object("velocity");
@@ -1852,27 +1852,27 @@ gmm :: sub_interval SUB_CT_P(0,nbdof_p);
     if (PARAM.int_value("VTK_EXPORT")) {
       cout << "export to " << datafilename + "U.vtk" << "..\n";
       static int cnta=0;
-      char sa[128]; sprintf(sa, "SolIcare/icareU%d.vtk", cnta++);
+      char sa[128]; snprintf(sa, 127, "SolIcare/icareU%d.vtk", cnta++);
       getfem::vtk_export tata( sa,PARAM.int_value("VTK_EXPORT")==1);
       tata.exporting(mf_u); 
       tata.write_point_data(mf_u, Un0, "vitesse");
       
       if (PARAM.int_value("TIME_ORDER")==2){
        static int cntam1=0;
-       char sam1[128]; sprintf(sam1, "SolIcare/icareUm%d.vtk", cntam1++);
+       char sam1[128]; snprintf(sam1, 127, "SolIcare/icareUm%d.vtk", cntam1++);
        getfem::vtk_export tamtam( sam1,PARAM.int_value("VTK_EXPORT")==1);
        tamtam.exporting(mf_u); 
        tamtam.write_point_data(mf_u, Unm1, "vitesse");
       }
       
       static int cnte=0;
-      char se[128]; sprintf(se, "SolIcare/icareP%d.vtk", cnte++);
+      char se[128]; snprintf(se, 127, "SolIcare/icareP%d.vtk", cnte++);
       getfem::vtk_export tete( se,PARAM.int_value("VTK_EXPORT")==1);
       tete.exporting(mf_p);
       tete.write_point_data(mf_p, Pn0, "pression");
 
       //static int cnti=0;
-      //char si[128]; sprintf(si, "SolIcare/icareRot%d.vtk", cnti++);
+      //char si[128]; snprintf(si, 127, "SolIcare/icareRot%d.vtk", cnti++);
       //getfem::vtk_export titi( si, PARAM.int_value("VTK_EXPORT")==1);
       //titi.exporting(mf_rhs);
       //titi.write_point_data(mf_rhs, Rot, "rotationnel");
@@ -1890,17 +1890,17 @@ gmm :: sub_interval SUB_CT_P(0,nbdof_p);
       // RotZ[i] = DU[i*N*N + 3] - DU[i*N*N + 1];
       //
       //static int cntt=0;
-      //char st[128]; sprintf(st, "SolIcare/icareRotX%d.vtk", cntt++);
+      //char st[128]; snprintf(st, 127, "SolIcare/icareRotX%d.vtk", cntt++);
       //getfem::vtk_export titi( st, PARAM.int_value("VTK_EXPORT")==1);
       //titi.exporting(mf_rhs);
       //titi.write_point_data(mf_rhs, RotX, "rotationnelX");
       //static int cntu=0;
-      //char su[128]; sprintf(su, "SolIcare/icareRotY%d.vtk", cntu++);
+      //char su[128]; snprintf(su, 127, "SolIcare/icareRotY%d.vtk", cntu++);
       //getfem::vtk_export tete( su, PARAM.int_value("VTK_EXPORT")==1);
       //tete.exporting(mf_rhs);
       //tete.write_point_data(mf_rhs, RotY, "rotationnelY");
       //static int cntv=0;
-      //char sv[128]; sprintf(sv, "SolIcare/icareRotZ%d.vtk", cntv++);
+      //char sv[128]; snprintf(sv, 127, "SolIcare/icareRotZ%d.vtk", cntv++);
       //getfem::vtk_export tyty( sv, PARAM.int_value("VTK_EXPORT")==1);
       //tyty.exporting(mf_rhs);
       //tyty.write_point_data(mf_rhs, RotZ, "rotationnelZ");
diff --git a/contrib/opt_assembly/opt_assembly.cc 
b/contrib/opt_assembly/opt_assembly.cc
index 534b9d71..41a3f6ae 100644
--- a/contrib/opt_assembly/opt_assembly.cc
+++ b/contrib/opt_assembly/opt_assembly.cc
@@ -389,8 +389,8 @@ static void test_new_assembly(int N, int NX, int pK) {
   
   getfem::mesh m;
   
-  char Ns[5]; sprintf(Ns, "%d", N);
-  char Ks[5]; sprintf(Ks, "%d", pK);
+  char Ns[5]; snprintf(Ns, 5, "%d", N);
+  char Ks[5]; snprintf(Ks, 5, "%d", pK);
   bgeot::pgeometric_trans pgt =
     bgeot::geometric_trans_descriptor
     ((std::string("GT_PK(") + Ns + ",1)").c_str());
diff --git a/contrib/xfem_stab_unilat_contact/xfem_stab_unilat_contact.cc 
b/contrib/xfem_stab_unilat_contact/xfem_stab_unilat_contact.cc
index 57917015..446be071 100644
--- a/contrib/xfem_stab_unilat_contact/xfem_stab_unilat_contact.cc
+++ b/contrib/xfem_stab_unilat_contact/xfem_stab_unilat_contact.cc
@@ -687,31 +687,31 @@ struct unilateral_contact_problem {
 
 std::string name_of_dof(getfem::pdof_description dof) {
   char s[200];
-  sprintf(s, "UnknownDof[%p]", (void*)dof);
+  snprintf(s, 199, "UnknownDof[%p]", (void*)dof);
   for (dim_type d = 0; d < 4; ++d) {
     if (dof == getfem::lagrange_dof(d)) {
-      sprintf(s, "Lagrange[%d]", d); goto found;
+      snprintf(s, 199, "Lagrange[%d]", d); goto found;
     }
     if (dof == getfem::normal_derivative_dof(d)) {
-      sprintf(s, "D_n[%d]", d); goto found;
+      snprintf(s, 199, "D_n[%d]", d); goto found;
     }
     if (dof == getfem::global_dof(d)) {
-      sprintf(s, "GlobalDof[%d]", d);
+      snprintf(s, 199, "GlobalDof[%d]", d);
     }
     if (dof == getfem::mean_value_dof(d)) {
-      sprintf(s, "MeanValue[%d]", d);
+      snprintf(s, 199, "MeanValue[%d]", d);
     }
     if (getfem::dof_xfem_index(dof) != 0) {
-      sprintf(s, "Xfem[idx:%d]", int(dof_xfem_index(dof)));
+      snprintf(s, 199, "Xfem[idx:%d]", int(dof_xfem_index(dof)));
     }
     
     for (dim_type r = 0; r < d; ++r) {
       if (dof == getfem::derivative_dof(d, r)) {
-       sprintf(s, "D_%c[%d]", "xyzuvw"[r], d); goto found;
+       snprintf(s, 199, "D_%c[%d]", "xyzuvw"[r], d); goto found;
       }
       for (dim_type t = 0; t < d; ++t) {
        if (dof == getfem::second_derivative_dof(d, r, t)) {
-         sprintf(s, "D2%c%c[%d]", "xyzuvw"[r], "xyzuvw"[t], d); 
+         snprintf(s, 199, "D2%c%c[%d]", "xyzuvw"[r], "xyzuvw"[t], d); 
          goto found;
        }
       }
diff --git a/interface/src/gf_slice_get.cc b/interface/src/gf_slice_get.cc
index 9a47f097..cc22b486 100644
--- a/interface/src/gf_slice_get.cc
+++ b/interface/src/gf_slice_get.cc
@@ -29,7 +29,7 @@ using namespace getfemint;
 static void fmt_pt_povray(std::ofstream &f, const getfem::base_node &pt) {
   char s[100];
   if (pt.size() == 0) GMM_THROW(getfemint_error, "empty point");
-  sprintf(s, "<%g,%g,%g>",pt[0],pt.size() > 1 ? pt[1] : 0., pt.size() > 2 ? 
pt[2] : 0.);
+  snprintf(s, 99, "<%g,%g,%g>",pt[0],pt.size() > 1 ? pt[1] : 0., pt.size() > 2 
? pt[2] : 0.);
   f << s;
 }
 
diff --git a/src/getfem/dal_basic.h b/src/getfem/dal_basic.h
index e0c2e3e3..1c9694b2 100644
--- a/src/getfem/dal_basic.h
+++ b/src/getfem/dal_basic.h
@@ -104,6 +104,8 @@ namespace dal
     bool operator ==(const dna_iterator &i) const { return (i.in==in);}
     bool operator !=(const dna_iterator &i) const { return (i.in!=in);}
     bool operator < (const dna_iterator &i) const { return ( in<i.in);}
+    bool operator >=(const dna_iterator &i) const { return ( in>=i.in);}
+    bool operator > (const dna_iterator &i) const { return ( in>i.in);}
   };
   
   /// Constant iterator class for dynamic array.
@@ -160,6 +162,10 @@ namespace dal
       { return (i.in != in); }
     bool operator < (const dna_const_iterator &i) const
       { return (in < i.in); }
+    bool operator >=(const dna_const_iterator &i) const
+      { return (i.in >= in); }
+    bool operator > (const dna_const_iterator &i) const
+      { return (in > i.in); }
   };
   
   /**  Dynamic Array. Defines the basic container of the library which is 
diff --git a/src/getfem/dal_bit_vector.h b/src/getfem/dal_bit_vector.h
index c7dc4aa8..1fe86b4b 100644
--- a/src/getfem/dal_bit_vector.h
+++ b/src/getfem/dal_bit_vector.h
@@ -82,6 +82,10 @@ namespace dal {
     { return bool(*this) == bool(x); }
     bool operator<(const bit_reference& x) const
       { return bool(*this) < bool(x); }
+    bool operator>(const bit_reference& x) const
+      { return bool(*this) > bool(x); }
+    bool operator>=(const bit_reference& x) const
+      { return bool(*this) >= bool(x); }
     void flip(void) { if (bool(*this)) *this = false; else *this = true; }
   };
 
@@ -126,6 +130,8 @@ namespace dal {
     bool operator==(const bit_iterator& x) const { return ind == x.ind; }
     bool operator!=(const bit_iterator& x) const { return ind != x.ind; }
     bool operator<(bit_iterator x) const { return ind < x.ind; }
+    bool operator>(bit_iterator x) const { return ind > x.ind; }
+    bool operator>=(bit_iterator x) const { return ind >= x.ind; }
   };
 
   struct APIDECL bit_const_iterator {
@@ -170,6 +176,8 @@ namespace dal {
     bool operator==(const bit_const_iterator& x) const { return ind == x.ind; }
     bool operator!=(const bit_const_iterator& x) const { return ind != x.ind; }
     bool operator<(bit_const_iterator x) const { return ind < x.ind; }
+    bool operator>(bit_const_iterator x) const { return ind > x.ind; }
+    bool operator>=(bit_const_iterator x) const { return ind >= x.ind; }
   };
 
   ///Dynamic bit container. 
diff --git a/src/getfem/dal_tas.h b/src/getfem/dal_tas.h
index 788052ed..e857c109 100644
--- a/src/getfem/dal_tas.h
+++ b/src/getfem/dal_tas.h
@@ -81,7 +81,9 @@ namespace dal
 
     bool operator ==(const dnt_iterator &i) const { return i.id==id;}
     bool operator !=(const dnt_iterator &i) const { return i.id!=id;}
-    bool operator < (const dnt_iterator &i) const { return id <i.id;}
+    bool operator < (const dnt_iterator &i) const { return id < i.id;}
+    bool operator > (const dnt_iterator &i) const { return id > i.id;}
+    bool operator >=(const dnt_iterator &i) const { return id >= i.id;}
   };
   
   template<class T, unsigned char pks> dnt_iterator<T, pks> &
@@ -129,6 +131,10 @@ namespace dal
     { return i.id != id;}
     bool operator < (const dnt_const_iterator &i) const
     { return id < i.id;}
+    bool operator > (const dnt_const_iterator &i) const
+    { return id > i.id;}
+    bool operator >=(const dnt_const_iterator &i) const
+    { return id >= i.id;}
   };
 
   template<class T, unsigned char pks> class dynamic_tas
diff --git a/src/getfem/getfem_generic_assembly.h 
b/src/getfem/getfem_generic_assembly.h
index 1eb582eb..61f010bc 100644
--- a/src/getfem/getfem_generic_assembly.h
+++ b/src/getfem/getfem_generic_assembly.h
@@ -271,7 +271,7 @@ namespace getfem {
 
     struct var_description {
 
-      const bool is_variable;
+      bool is_variable;
       const mesh_fem *mf;
       const im_data *imd;
       gmm::sub_interval I;
@@ -279,7 +279,7 @@ namespace getfem {
       bgeot::multi_index qdims;  // For data having a qdim different than the
                                  // qdim of the fem or im_data (dim per dof for
                                  // dof data) and for constant variables.
-      const bool is_internal;
+      bool is_internal;
 
       size_type qdim() const {
         size_type q = 1;
diff --git a/src/getfem/getfem_mesh_fem.h b/src/getfem/getfem_mesh_fem.h
index 52a824e6..38df5461 100644
--- a/src/getfem/getfem_mesh_fem.h
+++ b/src/getfem/getfem_mesh_fem.h
@@ -86,7 +86,11 @@ namespace getfem {
     { return (it == i.it) && (ii == i.ii); }
     bool operator !=(const iterator &i) const { return !(i == *this); }
     bool operator < (const iterator &i) const
-    { return (it < i.it) && (ii < i.ii); }
+    { return (it < i.it) || ((it == i.it) && (ii < i.ii)); }
+    bool operator > (const iterator &i) const
+    { return (it > i.it) || ((it == i.it) && (ii > i.ii)); }
+    bool operator >= (const iterator &i) const
+    { return (it > i.it) || ((it == i.it) && (ii >= i.ii)); }
 
     tab_scal_to_vect_iterator() {}
     tab_scal_to_vect_iterator(const ITER &iter, dim_type n, dim_type i)
diff --git a/src/getfem_contact_and_friction_large_sliding.cc 
b/src/getfem_contact_and_friction_large_sliding.cc
index ab45a51f..a59ea124 100644
--- a/src/getfem_contact_and_friction_large_sliding.cc
+++ b/src/getfem_contact_and_friction_large_sliding.cc
@@ -2598,7 +2598,7 @@ namespace getfem {
 
     char ugroupname[50], wgroupname[50], transname[50];
     for (int i = 0; i < 10000; ++i) {
-      sprintf(ugroupname, "disp__group_raytracing_%d", i);
+      snprintf(ugroupname, 49, "disp__group_raytracing_%d", i);
       if (!(md.variable_group_exists(ugroupname))
           && !(md.variable_exists(ugroupname)))
         break;
@@ -2606,7 +2606,7 @@ namespace getfem {
     md.define_variable_group(ugroupname, std::vector<std::string>());
 
     for (int i = 0; i < 10000; ++i) {
-      sprintf(wgroupname, "w__group_raytracing_%d", i);
+      snprintf(wgroupname, 49, "w__group_raytracing_%d", i);
       if (!(md.variable_group_exists(wgroupname))
           && !(md.variable_exists(wgroupname)))
         break;
@@ -2614,7 +2614,7 @@ namespace getfem {
     md.define_variable_group(wgroupname, std::vector<std::string>());
 
     for (int i = 0; i < 10000; ++i) {
-      sprintf(transname, "trans__raytracing_%d", i);
+      snprintf(transname, 49, "trans__raytracing_%d", i);
       if (!(md.interpolate_transformation_exists(transname)))
         break;
     }
@@ -2935,7 +2935,7 @@ namespace getfem {
 
     char ugroupname[50], wgroupname[50], transname[50];
     for (int i = 0; i < 10000; ++i) {
-      sprintf(ugroupname, "disp__group_raytracing_%d", i);
+      snprintf(ugroupname, 49, "disp__group_raytracing_%d", i);
       if (!(md.variable_group_exists(ugroupname))
           && !(md.variable_exists(ugroupname)))
         break;
@@ -2943,7 +2943,7 @@ namespace getfem {
     md.define_variable_group(ugroupname, std::vector<std::string>());
 
     for (int i = 0; i < 10000; ++i) {
-      sprintf(wgroupname, "w__group_raytracing_%d", i);
+      snprintf(wgroupname, 49, "w__group_raytracing_%d", i);
       if (!(md.variable_group_exists(wgroupname))
           && !(md.variable_exists(wgroupname)))
         break;
@@ -2951,7 +2951,7 @@ namespace getfem {
     md.define_variable_group(wgroupname, std::vector<std::string>());
 
     for (int i = 0; i < 10000; ++i) {
-      sprintf(transname, "trans__raytracing_%d", i);
+      snprintf(transname, 49, "trans__raytracing_%d", i);
       if (!(md.interpolate_transformation_exists(transname)))
         break;
     }
diff --git a/src/getfem_fem.cc b/src/getfem_fem.cc
index 8ce7803a..1dd4698c 100644
--- a/src/getfem_fem.cc
+++ b/src/getfem_fem.cc
@@ -1023,7 +1023,7 @@ namespace getfem {
     if (discontinuous && params.size() == 3) {
       scalar_type v = params[2].num();
       GMM_ASSERT1(v >= 0 && v <= 1, "Bad value for alpha: " << v);
-      sprintf(alpha, ",%g", v);
+      snprintf(alpha, 127, ",%g", v);
     }
     GMM_ASSERT1(n > 0 && n < 100 && k >= 0 && k <= 150 &&
                 double(n) == params[0].num() && double(k) == params[1].num(),
@@ -1087,7 +1087,7 @@ namespace getfem {
     if (params.size() == 3) {
       scalar_type v = params[2].num();
       GMM_ASSERT1(v >= 0 && v <= 1, "Bad value for alpha: " << v);
-      sprintf(alpha, ",%g", v);
+      snprintf(alpha, 127, ",%g", v);
     }
     GMM_ASSERT1(n > 1 && n < 100 && k >= 0 && k <= 150 &&
                 double(n) == params[0].num() && double(k) == params[1].num(),
diff --git a/src/getfem_mesh_level_set.cc b/src/getfem_mesh_level_set.cc
index a720e58c..c1f04980 100644
--- a/src/getfem_mesh_level_set.cc
+++ b/src/getfem_mesh_level_set.cc
@@ -645,7 +645,7 @@ struct Chrono {
       if (noisy) {
        getfem::stored_mesh_slice sl;
        sl.build(msh, getfem::slicer_none(), 1);
-       char s[512]; sprintf(s, "totobefore%d.dx", int(cv));
+       char s[512]; snprintf(s, 511, "totobefore%d.dx", int(cv));
        getfem::dx_export exp(s);
        exp.exporting(sl);
        exp.exporting_mesh_edges();
@@ -705,7 +705,7 @@ struct Chrono {
       if (noisy) {
        getfem::stored_mesh_slice sl;
        sl.build(msh, getfem::slicer_none(), 12);
-       char s[512]; sprintf(s, "toto%d.dx", int(cv));
+       char s[512]; snprintf(s, 511, "toto%d.dx", int(cv));
        getfem::dx_export exp(s);
        exp.exporting(sl);
        exp.exporting_mesh_edges();
diff --git a/src/getfem_mesher.cc b/src/getfem_mesher.cc
index 01349224..8eae26f3 100644
--- a/src/getfem_mesher.cc
+++ b/src/getfem_mesher.cc
@@ -1291,7 +1291,7 @@ namespace getfem {
         // for (size_type i=0; i < t.size()/(N+1); ++i)
         //  m.add_convex_by_points(bgeot::simplex_geotrans(N,1),
         //                 dal::index_ref_iterator(pts.begin(), &t[i*(N+1)]));
-        // char s[50]; sprintf(s, "toto%02d.mesh", count);
+        // char s[50]; snprintf(s, 49, "toto%02d.mesh", count);
         // m.write_to_file(s);
 
         if ( (count > 40 && sqrt(maxdp)*deltat < ptol * h0)
diff --git a/src/gmm/gmm_conjugated.h b/src/gmm/gmm_conjugated.h
index 2ff8ad19..f7684204 100644
--- a/src/gmm/gmm_conjugated.h
+++ b/src/gmm/gmm_conjugated.h
@@ -86,6 +86,10 @@ namespace gmm {
       { return (i.it != it); }
     bool operator < (const conjugated_const_iterator &i) const
       { return (it < i.it); }
+    bool operator > (const conjugated_const_iterator &i) const
+      { return (it > i.it); }
+    bool operator >= (const conjugated_const_iterator &i) const
+      { return (it >= i.it); }
   };
 
   template <typename V> struct conjugated_vector_const_ref {
@@ -170,6 +174,8 @@ namespace gmm {
     bool operator ==(const iterator &i) const { return (it == i.it); }
     bool operator !=(const iterator &i) const { return !(i == *this); }
     bool operator < (const iterator &i) const { return (it < i.it); }
+    bool operator > (const iterator &i) const { return (it > i.it); }
+    bool operator >=(const iterator &i) const { return (it >= i.it); }
 
     conjugated_row_const_iterator(void) {}
     conjugated_row_const_iterator(const ITER &i) : it(i) { }
@@ -227,7 +233,9 @@ namespace gmm {
 
     bool operator ==(const iterator &i) const { return (it == i.it); }
     bool operator !=(const iterator &i) const { return !(i == *this); }
-    bool operator < (const iterator &i) const { return (it < i.it); }
+    bool operator < (const iterator &i) const { return (it <  i.it); }
+    bool operator > (const iterator &i) const { return (it >  i.it); }
+    bool operator >=(const iterator &i) const { return (it >= i.it); }
 
     conjugated_col_const_iterator(void) {}
     conjugated_col_const_iterator(const ITER &i) : it(i) { }
diff --git a/src/gmm/gmm_interface.h b/src/gmm/gmm_interface.h
index 6635a25b..fb3cc0e5 100644
--- a/src/gmm/gmm_interface.h
+++ b/src/gmm/gmm_interface.h
@@ -475,6 +475,10 @@ namespace gmm {
     bool operator !=(const iterator &ii) const { return !(ii == *this); }
     bool operator < (const iterator &ii) const
     { return (*this - ii) < difference_type(0); }
+    bool operator > (const iterator &ii) const
+    { return (*this - ii) > difference_type(0); }
+    bool operator >=(const iterator &ii) const
+    { return (*this - ii) >= difference_type(0); }
 
     dense_compressed_iterator(void) {}
     dense_compressed_iterator(const dense_compressed_iterator<MIT,MIT,MPT> &ii)
@@ -613,7 +617,9 @@ namespace gmm {
 
     bool operator ==(const iterator &i) const { return (jc == i.jc); }
     bool operator !=(const iterator &i) const { return !(i == *this); }
-    bool operator < (const iterator &i) const { return (jc < i.jc); }
+    bool operator < (const iterator &i) const { return (jc <  i.jc); }
+    bool operator > (const iterator &i) const { return (jc >  i.jc); }
+    bool operator >=(const iterator &i) const { return (jc >= i.jc); }
 
     sparse_compressed_iterator(void) {}
     sparse_compressed_iterator(PT1 p1, PT2 p2, PT3 p3, size_type nn,
diff --git a/src/gmm/gmm_real_part.h b/src/gmm/gmm_real_part.h
index 0ea6d4dd..6a24debb 100644
--- a/src/gmm/gmm_real_part.h
+++ b/src/gmm/gmm_real_part.h
@@ -170,6 +170,10 @@ namespace gmm {
       { return (i.it != it); }
     bool operator < (const part_vector_iterator &i) const
       { return (it < i.it); }
+    bool operator > (const part_vector_iterator &i) const
+      { return (it > i.it); }
+    bool operator >=(const part_vector_iterator &i) const
+      { return (it >= i.it); }
   };
 
 
diff --git a/src/gmm/gmm_ref.h b/src/gmm/gmm_ref.h
index b41fbdd5..7c629542 100644
--- a/src/gmm/gmm_ref.h
+++ b/src/gmm/gmm_ref.h
@@ -156,6 +156,16 @@ namespace gmm {
 //       return ((piter) == ((i.piter))
 //      && *((dnas_iterator_ *)(this)) < *((*((dnas_iterator_ *)(this)))));
 //     }
+//     bool operator > (const iterator &i) const
+//     { 
+//       return ((piter) == ((i.piter))
+//      && *((dnas_iterator_ *)(this)) > *((*((dnas_iterator_ *)(this)))));
+//     }
+//     bool operator >= (const iterator &i) const
+//     { 
+//       return ((piter) == ((i.piter))
+//      && *((dnas_iterator_ *)(this)) >= *((*((dnas_iterator_ *)(this)))));
+//     }
 
 //     tab_ref_index_iterator_(void) {}
 //     tab_ref_index_iterator_(const ITER &iter, const dnas_iterator_ 
&dnas_iter)
@@ -264,6 +274,10 @@ namespace gmm {
       bool operator !=(const iterator &i) const { return !(i == *this); }
       bool operator < (const iterator &i) const
       { return ((piter) == ((i.piter)) && iter_index < i.iter_index); }
+      bool operator > (const iterator &i) const
+      { return ((piter) == ((i.piter)) && iter_index > i.iter_index); }
+      bool operator >=(const iterator &i) const
+      { return ((piter) == ((i.piter)) && iter_index >= i.iter_index); }
 
       tab_ref_index_ref_iterator_(void) {}
       tab_ref_index_ref_iterator_(const ITER &iter, 
@@ -385,6 +399,10 @@ namespace gmm {
     { return  (*this - ii) != difference_type(0); }
     bool operator < (const iterator &ii) const
     { return (*this - ii) < difference_type(0); }
+    bool operator >=(const iterator &ii) const
+    { return (*this - ii) >= difference_type(0); }
+    bool operator > (const iterator &ii) const
+    { return (*this - ii) > difference_type(0); }
 
     tab_ref_reg_spaced_iterator_(void) {}
     tab_ref_reg_spaced_iterator_(const ITER &iter, size_type n, size_type ii)
diff --git a/src/gmm/gmm_scaled.h b/src/gmm/gmm_scaled.h
index 0d7d563c..9f1518f4 100644
--- a/src/gmm/gmm_scaled.h
+++ b/src/gmm/gmm_scaled.h
@@ -87,7 +87,11 @@ namespace gmm {
     inline bool operator !=(const scaled_const_iterator &i) const
       { return (i.it != it); }
     inline bool operator < (const scaled_const_iterator &i) const
-      { return (it < i.it); }
+      { return (it <  i.it); }
+    inline bool operator > (const scaled_const_iterator &i) const
+      { return (it >  i.it); }
+    inline bool operator >=(const scaled_const_iterator &i) const
+      { return (it >= i.it); }
   };
 
   template <typename V, typename S> struct scaled_vector_const_ref {
@@ -146,7 +150,9 @@ namespace gmm {
 
     inline bool operator ==(const iterator &i) const { return (it == i.it); }
     inline bool operator !=(const iterator &i) const { return !(i == *this); }
-    inline bool operator < (const iterator &i) const { return (it < i.it); }
+    inline bool operator < (const iterator &i) const { return (it <  i.it); }
+    inline bool operator >=(const iterator &i) const { return (it >= i.it); }
+    inline bool operator > (const iterator &i) const { return (it >  i.it); }
 
     scaled_row_const_iterator(void) {}
     scaled_row_const_iterator(const ITER &i, S rr)
@@ -207,7 +213,9 @@ namespace gmm {
 
     bool operator ==(const iterator &i) const { return (it == i.it); }
     bool operator !=(const iterator &i) const { return !(i == *this); }
-    bool operator < (const iterator &i) const { return (it < i.it); }
+    bool operator < (const iterator &i) const { return (it <  i.it); }
+    bool operator > (const iterator &i) const { return (it >  i.it); }
+    bool operator >=(const iterator &i) const { return (it >= i.it); }
 
     scaled_col_const_iterator(void) {}
     scaled_col_const_iterator(const ITER &i, S rr)
diff --git a/src/gmm/gmm_std.h b/src/gmm/gmm_std.h
index 413df776..6ed41a32 100644
--- a/src/gmm/gmm_std.h
+++ b/src/gmm/gmm_std.h
@@ -68,9 +68,9 @@
 # define SECURE_NONCHAR_FSCANF fscanf
 # define SECURE_STRNCPY(a, la, b, lb) strncpy(a, b, lb)
 # define SECURE_FOPEN(F, filename, mode) ((*(F)) = fopen(filename, mode))
-# define SECURE_SPRINTF1(S, l, st, p1) sprintf(S, st, p1)
-# define SECURE_SPRINTF2(S, l, st, p1, p2) sprintf(S, st, p1, p2)
-# define SECURE_SPRINTF4(S, l, st, p1, p2, p3, p4) sprintf(S, st, p1, p2, p3, 
p4)
+# define SECURE_SPRINTF1(S, l, st, p1) snprintf(S, l, st, p1)
+# define SECURE_SPRINTF2(S, l, st, p1, p2) snprintf(S, l, st, p1, p2)
+# define SECURE_SPRINTF4(S, l, st, p1, p2, p3, p4) snprintf(S, l, st, p1, p2, 
p3, p4)
 # define SECURE_STRDUP(s) strdup(s)
 #endif
 
diff --git a/src/gmm/gmm_sub_matrix.h b/src/gmm/gmm_sub_matrix.h
index 998a7662..f89d626e 100644
--- a/src/gmm/gmm_sub_matrix.h
+++ b/src/gmm/gmm_sub_matrix.h
@@ -115,7 +115,9 @@ namespace gmm {
 
     bool operator ==(const iterator &i) const { return (ii == i.ii); }
     bool operator !=(const iterator &i) const { return !(i == *this); }
-    bool operator < (const iterator &i) const { return (ii < i.ii); }
+    bool operator < (const iterator &i) const { return (ii <  i.ii); }
+    bool operator > (const iterator &i) const { return (ii >  i.ii); }
+    bool operator >=(const iterator &i) const { return (ii >= i.ii); }
 
     gen_sub_row_matrix_iterator(void) {}
     gen_sub_row_matrix_iterator(const 
@@ -263,7 +265,9 @@ namespace gmm {
 
     bool operator ==(const iterator &i) const { return (ii == i.ii); }
     bool operator !=(const iterator &i) const { return !(i == *this); }
-    bool operator < (const iterator &i) const { return (ii < i.ii); }
+    bool operator < (const iterator &i) const { return (ii <  i.ii); }
+    bool operator > (const iterator &i) const { return (ii >  i.ii); }
+    bool operator >=(const iterator &i) const { return (ii >= i.ii); }
 
     gen_sub_col_matrix_iterator(void) {}
     gen_sub_col_matrix_iterator(const 
diff --git a/src/gmm/gmm_sub_vector.h b/src/gmm/gmm_sub_vector.h
index 8e99eb80..c75c8a7b 100644
--- a/src/gmm/gmm_sub_vector.h
+++ b/src/gmm/gmm_sub_vector.h
@@ -309,7 +309,9 @@ namespace gmm {
 
     bool operator ==(const iterator &i) const { return index() == i.index();}
     bool operator !=(const iterator &i) const { return !(i == *this); }
-    bool operator < (const iterator &i) const { return index()  < i.index();}
+    bool operator < (const iterator &i) const { return index()  <  i.index();}
+    bool operator > (const iterator &i) const { return index()  >  i.index();}
+    bool operator >=(const iterator &i) const { return index()  >= i.index();}
 
     skyline_sub_vector_iterator() {}
     skyline_sub_vector_iterator(const IT &it, const SUBI &s)
diff --git a/src/gmm/gmm_vector.h b/src/gmm/gmm_vector.h
index 2e4919bf..7e6e5dcc 100644
--- a/src/gmm/gmm_vector.h
+++ b/src/gmm/gmm_vector.h
@@ -1367,6 +1367,10 @@ namespace gmm {
     { return !(i == *this); }
     bool operator < (const iterator &i) const
     { return it < i.it; }
+    bool operator > (const iterator &i) const
+    { return it > i.it; }
+    bool operator >=(const iterator &i) const
+    { return it >= i.it; }
     size_type index() const { return shift; }
 
     slvector_iterator() {}
@@ -1418,6 +1422,10 @@ namespace gmm {
     { return !(i == *this); }
     bool operator < (const iterator &i) const
     { return it < i.it; }
+    bool operator > (const iterator &i) const
+    { return it > i.it; }
+    bool operator >=(const iterator &i) const
+    { return it >= i.it; }
     size_type index() const { return shift; }
 
     slvector_const_iterator() {}
diff --git a/src/gmm/gmm_vector_to_matrix.h b/src/gmm/gmm_vector_to_matrix.h
index 95b0bea1..66d691e4 100644
--- a/src/gmm/gmm_vector_to_matrix.h
+++ b/src/gmm/gmm_vector_to_matrix.h
@@ -101,7 +101,9 @@ namespace gmm {
 
     bool operator ==(const iterator &i) const { return (isend == i.isend); }
     bool operator !=(const iterator &i) const { return !(i == *this); }
-    bool operator < (const iterator &i) const { return (*this - i < 0); }
+    bool operator < (const iterator &i) const { return (*this - i <  0); }
+    bool operator > (const iterator &i) const { return (*this - i >  0); }
+    bool operator >=(const iterator &i) const { return (*this - i >= 0); }
 
     gen_row_vector_iterator(void) {}
     gen_row_vector_iterator(const gen_row_vector_iterator<MPT> &itm)
@@ -225,7 +227,9 @@ namespace gmm {
 
     bool operator ==(const iterator &i) const { return (isend == i.isend); }
     bool operator !=(const iterator &i) const { return !(i == *this); }
-    bool operator < (const iterator &i) const { return (*this - i < 0); }
+    bool operator < (const iterator &i) const { return (*this - i <  0); }
+    bool operator > (const iterator &i) const { return (*this - i >  0); }
+    bool operator >=(const iterator &i) const { return (*this - i >= 0); }
 
     gen_col_vector_iterator(void) {}
     gen_col_vector_iterator(const gen_col_vector_iterator<MPT> &itm)
diff --git a/tests/crack.cc b/tests/crack.cc
index 52350dde..f5aff767 100644
--- a/tests/crack.cc
+++ b/tests/crack.cc
@@ -376,31 +376,31 @@ struct crack_problem {
 
 std::string name_of_dof(getfem::pdof_description dof) {
   char s[200];
-  sprintf(s, "UnknownDof[%p]", (void*)dof);
+  snprintf(s, 199, "UnknownDof[%p]", (void*)dof);
   for (dim_type d = 0; d < 4; ++d) {
     if (dof == getfem::lagrange_dof(d)) {
-      sprintf(s, "Lagrange[%d]", d); goto found;
+      snprintf(s, 199, "Lagrange[%d]", d); goto found;
     }
     if (dof == getfem::normal_derivative_dof(d)) {
-      sprintf(s, "D_n[%d]", d); goto found;
+      snprintf(s, 199, "D_n[%d]", d); goto found;
     }
     if (dof == getfem::global_dof(d)) {
-      sprintf(s, "GlobalDof[%d]", d);
+      snprintf(s, 199, "GlobalDof[%d]", d);
     }
     if (dof == getfem::mean_value_dof(d)) {
-      sprintf(s, "MeanValue[%d]", d);
+      snprintf(s, 199, "MeanValue[%d]", d);
     }
     if (getfem::dof_xfem_index(dof) != 0) {
-      sprintf(s, "Xfem[idx:%d]", int(dof_xfem_index(dof)));
+      snprintf(s, 199, "Xfem[idx:%d]", int(dof_xfem_index(dof)));
     }
     
     for (dim_type r = 0; r < d; ++r) {
       if (dof == getfem::derivative_dof(d, r)) {
-       sprintf(s, "D_%c[%d]", "xyzuvw"[r], d); goto found;
+       snprintf(s, 199, "D_%c[%d]", "xyzuvw"[r], d); goto found;
       }
       for (dim_type t = 0; t < d; ++t) {
        if (dof == getfem::second_derivative_dof(d, r, t)) {
-         sprintf(s, "D2%c%c[%d]", "xyzuvw"[r], "xyzuvw"[t], d); 
+         snprintf(s, 199, "D2%c%c[%d]", "xyzuvw"[r], "xyzuvw"[t], d); 
          goto found;
        }
       }
diff --git a/tests/heat_equation.cc b/tests/heat_equation.cc
index 25e0fec2..c12a0258 100644
--- a/tests/heat_equation.cc
+++ b/tests/heat_equation.cc
@@ -300,7 +300,7 @@ bool heat_equation_problem::solve(void) {
     // cout << "t = " << model.get_time() << endl;
     gmm::copy(model.real_variable("u"), U);
     if (PARAM.int_value("EXPORT_SOLUTION") != 0) {
-      char s[100]; sprintf(s, "step%d", int(t/dt)+1);
+      char s[100]; snprintf(s, 100, "step%d", int(t/dt)+1);
       gmm::vecsave(datafilename + s + ".U", U);
     }
     
diff --git a/tests/integration.cc b/tests/integration.cc
index 4f83d107..2d5a0ba7 100644
--- a/tests/integration.cc
+++ b/tests/integration.cc
@@ -204,29 +204,29 @@ const std::vector<size_type>& CUBE4D_D() {
 static void check_orders() {
   char s[512];
   for (int k=1; k < 20; k+=6) {
-    sprintf(s,"IM_GAUSS1D(%d)",k); check_im_order(s);
-    sprintf(s,"IM_GAUSSLOBATTO1D(%d)",k); check_im_order(s);
+    snprintf(s, 511, "IM_GAUSS1D(%d)",k); check_im_order(s);
+    snprintf(s, 511, "IM_GAUSSLOBATTO1D(%d)",k); check_im_order(s);
   }
   for (std::vector<size_type>::const_iterator it = TRIANGLE_D().begin(); it != 
TRIANGLE_D().end(); ++it) {
-    sprintf(s,"IM_TRIANGLE(%d)",int(*it)); check_im_order(s);
+    snprintf(s,511, "IM_TRIANGLE(%d)",int(*it)); check_im_order(s);
   }
   for (std::vector<size_type>::const_iterator it = TETRA_D().begin(); it != 
TETRA_D().end(); ++it) {
-    sprintf(s,"IM_TETRAHEDRON(%d)",int(*it)); check_im_order(s);
+    snprintf(s,511, "IM_TETRAHEDRON(%d)",int(*it)); check_im_order(s);
   }
   for (std::vector<size_type>::const_iterator it = QUAD_D().begin(); it != 
QUAD_D().end(); ++it) {
-    sprintf(s,"IM_QUAD(%d)",int(*it)); check_im_order(s);
+    snprintf(s,511, "IM_QUAD(%d)",int(*it)); check_im_order(s);
   }
   for (std::vector<size_type>::const_iterator it = TETRA_D().begin(); it != 
TETRA_D().end(); ++it) {
-    sprintf(s,"IM_TETRAHEDRON(%d)",int(*it)); check_im_order(s);
+    snprintf(s,511, "IM_TETRAHEDRON(%d)",int(*it)); check_im_order(s);
   }
   for (std::vector<size_type>::const_iterator it = SIMPLEX4_D().begin(); it != 
SIMPLEX4_D().end(); ++it) {
-    sprintf(s,"IM_SIMPLEX4D(%d)",int(*it)); check_im_order(s);
+    snprintf(s,511, "IM_SIMPLEX4D(%d)",int(*it)); check_im_order(s);
   }
   for (std::vector<size_type>::const_iterator it = HEXA_D().begin(); it != 
HEXA_D().end(); ++it) {
-    sprintf(s,"IM_HEXAHEDRON(%d)",int(*it)); check_im_order(s);
+    snprintf(s,511, "IM_HEXAHEDRON(%d)",int(*it)); check_im_order(s);
   }
   for (std::vector<size_type>::const_iterator it = CUBE4D_D().begin(); it != 
CUBE4D_D().end(); ++it) {
-    sprintf(s,"IM_CUBE4D(%d)",int(*it)); check_im_order(s);
+    snprintf(s,511, "IM_CUBE4D(%d)",int(*it)); check_im_order(s);
   }
 }
 
@@ -234,11 +234,11 @@ static void check_methods() {
   char s[512];
   getfem::pintegration_method ppi;
   for (size_type k=0; k < 15; ++k) {
-    sprintf(s,"IM_GAUSS1D(%d)",int(k)); ppi = getfem::int_method_descriptor(s);
+    snprintf(s,511,"IM_GAUSS1D(%d)",int(k)); ppi = 
getfem::int_method_descriptor(s);
     check_method(s,ppi,k,bgeot::simplex_geotrans(1,1));
-    sprintf(s,"IM_NC(1,%d)",int(k)); ppi = getfem::int_method_descriptor(s);
+    snprintf(s,511,"IM_NC(1,%d)",int(k)); ppi = 
getfem::int_method_descriptor(s);
     check_method(s,ppi,k,bgeot::simplex_geotrans(1,1));
-    sprintf(s,"IM_EXACT_SIMPLEX(1)"); ppi = getfem::int_method_descriptor(s);
+    snprintf(s,511,"IM_EXACT_SIMPLEX(1)"); ppi = 
getfem::int_method_descriptor(s);
     check_method(s,ppi,k,bgeot::simplex_geotrans(1,1));
   }
 
@@ -246,13 +246,13 @@ static void check_methods() {
 
   for (size_type d=2; d < 5; ++d) {
     for (size_type k=0; k < 7-d; ++k) {
-      sprintf(s,"IM_EXACT_SIMPLEX(%d)",int(d)); ppi = 
getfem::int_method_descriptor(s);
+      snprintf(s,511,"IM_EXACT_SIMPLEX(%d)",int(d)); ppi = 
getfem::int_method_descriptor(s);
       check_method(s,ppi,k,bgeot::simplex_geotrans(d,1));
     }
   }
 
   for (std::vector<size_type>::const_iterator it = TRIANGLE_D().begin(); it != 
TRIANGLE_D().end(); ++it) {
-    sprintf(s,"IM_TRIANGLE(%d)",int(*it)); ppi = 
getfem::int_method_descriptor(s);
+    snprintf(s,511,"IM_TRIANGLE(%d)",int(*it)); ppi = 
getfem::int_method_descriptor(s);
     for (size_type k=1; k <= *it; ++k) { 
       check_method(s,ppi,k,bgeot::simplex_geotrans(2,1));
     }
@@ -261,19 +261,19 @@ static void check_methods() {
   for (size_type d=2; d < 5; ++d) {
     for (size_type i=1; i < 8; ++i) {
       for (size_type k=0; k < std::min(i,5-d); ++k) {
-       sprintf(s,"IM_NC(%d,%d)",int(d),int(i)); ppi = 
getfem::int_method_descriptor(s);
+       snprintf(s,511,"IM_NC(%d,%d)",int(d),int(i)); ppi = 
getfem::int_method_descriptor(s);
        check_method(s,ppi,k,bgeot::simplex_geotrans(d,1));
       }
     }
   }
   for (std::vector<size_type>::const_iterator it = TETRA_D().begin(); it != 
TETRA_D().end(); ++it) {
-    sprintf(s,"IM_TETRAHEDRON(%d)",int(*it)); ppi = 
getfem::int_method_descriptor(s);
+    snprintf(s,511,"IM_TETRAHEDRON(%d)",int(*it)); ppi = 
getfem::int_method_descriptor(s);
     for (size_type k=1; k <= *it; ++k) { 
       check_method(s,ppi,k,bgeot::simplex_geotrans(3,1));
     }
   }
   for (std::vector<size_type>::const_iterator it = SIMPLEX4_D().begin(); it != 
SIMPLEX4_D().end(); ++it) {
-    sprintf(s,"IM_SIMPLEX4D(%d)",int(*it)); ppi = 
getfem::int_method_descriptor(s);
+    snprintf(s,511,"IM_SIMPLEX4D(%d)",int(*it)); ppi = 
getfem::int_method_descriptor(s);
     for (size_type k=1; k <= *it; ++k) { 
       check_method(s,ppi,k,bgeot::simplex_geotrans(4,1));
     }
@@ -288,48 +288,48 @@ static void check_methods() {
     default: kmax = 3; break;
     }
     for (size_type k=0; k < kmax; ++k) {
-      sprintf(s,"IM_EXACT_PARALLELEPIPED(%d)",int(d)); ppi = 
getfem::int_method_descriptor(s);
+      snprintf(s,511,"IM_EXACT_PARALLELEPIPED(%d)",int(d)); ppi = 
getfem::int_method_descriptor(s);
       check_method(s,ppi,k,bgeot::parallelepiped_linear_geotrans(d));
-      sprintf(s,"IM_GAUSS_PARALLELEPIPED(%d,%d)",int(d),int(k)); ppi = 
getfem::int_method_descriptor(s);
+      snprintf(s,511,"IM_GAUSS_PARALLELEPIPED(%d,%d)",int(d),int(k)); ppi = 
getfem::int_method_descriptor(s);
       check_method(s,ppi,k,bgeot::parallelepiped_linear_geotrans(d));
-      sprintf(s,"IM_NC_PARALLELEPIPED(%d,%d)",int(d),int(k)); ppi = 
getfem::int_method_descriptor(s);
+      snprintf(s,511,"IM_NC_PARALLELEPIPED(%d,%d)",int(d),int(k)); ppi = 
getfem::int_method_descriptor(s);
       check_method(s,ppi,k,bgeot::parallelepiped_linear_geotrans(d));
       if (d>1) {
-       
sprintf(s,"IM_PRODUCT(IM_GAUSS_PARALLELEPIPED(%d,%d),IM_NC(1,%d))",int(d-1),int(k),int(k));
 
+       
snprintf(s,511,"IM_PRODUCT(IM_GAUSS_PARALLELEPIPED(%d,%d),IM_NC(1,%d))",int(d-1),int(k),int(k));
 
        ppi = getfem::int_method_descriptor(s);
        check_method(s,ppi,k,bgeot::parallelepiped_linear_geotrans(d));
       }
     }
   }
   for (std::vector<size_type>::const_iterator it = QUAD_D().begin(); it != 
QUAD_D().end(); ++it) {
-    sprintf(s,"IM_QUAD(%d)",int(*it)); ppi = getfem::int_method_descriptor(s);
+    snprintf(s,511,"IM_QUAD(%d)",int(*it)); ppi = 
getfem::int_method_descriptor(s);
     for (size_type k=1; k <= size_type(sqrt(scalar_type(*it))); k++) { 
       check_method(s,ppi,k,bgeot::parallelepiped_linear_geotrans(2));
     }
   }
   for (std::vector<size_type>::const_iterator it = HEXA_D().begin(); it != 
HEXA_D().end(); ++it) {
-    sprintf(s,"IM_HEXAHEDRON(%d)",int(*it)); ppi = 
getfem::int_method_descriptor(s);
+    snprintf(s,511,"IM_HEXAHEDRON(%d)",int(*it)); ppi = 
getfem::int_method_descriptor(s);
     check_method(s,ppi,size_type(::pow(scalar_type(*it),1./3.)), 
bgeot::parallelepiped_linear_geotrans(3));
   }
   for (std::vector<size_type>::const_iterator it = CUBE4D_D().begin(); it != 
CUBE4D_D().end(); ++it) {
-    sprintf(s,"IM_CUBE4D(%d)", int(*it)); ppi = 
getfem::int_method_descriptor(s);
+    snprintf(s,511,"IM_CUBE4D(%d)", int(*it)); ppi = 
getfem::int_method_descriptor(s);
     check_method(s,ppi,1,bgeot::parallelepiped_linear_geotrans(4));
   }
 
   for (size_type d=2; d < 5; ++d) {
     for (size_type k=0; k < 7-d; ++k) {
-      sprintf(s,"IM_EXACT_PRISM(%d)",int(d));
+      snprintf(s,511,"IM_EXACT_PRISM(%d)",int(d));
       ppi = getfem::int_method_descriptor(s);
       
       check_method(s, getfem::int_method_descriptor(s), k,
                   bgeot::prism_linear_geotrans(d));
-      sprintf(s,"IM_NC_PRISM(%d,%d)", int(d),int(k));
+      snprintf(s,511,"IM_NC_PRISM(%d,%d)", int(d),int(k));
       ppi = getfem::int_method_descriptor(s);
       check_method(s, getfem::int_method_descriptor(s), k,
                   bgeot::prism_geotrans(d, short_type(std::max(k, 
size_type(1)))));
     
       if (d == 3) {    
-       sprintf(s,"IM_PRODUCT(IM_TRIANGLE(6),IM_GAUSS1D(6))");
+       snprintf(s,511,"IM_PRODUCT(IM_TRIANGLE(6),IM_GAUSS1D(6))");
        ppi = getfem::int_method_descriptor(s);
        check_method(s, getfem::int_method_descriptor(s), k,
                     
bgeot::prism_geotrans(d,short_type(std::max<size_type>(k,1))));
@@ -340,32 +340,32 @@ static void check_methods() {
 
 
   {
-    sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_GAUSS1D(3),4)");
+    snprintf(s,511,"IM_STRUCTURED_COMPOSITE(IM_GAUSS1D(3),4)");
     check_method(s, getfem::int_method_descriptor(s), 3, 
bgeot::simplex_geotrans(1,1));
-    sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_TRIANGLE(3),4)");
+    snprintf(s,511,"IM_STRUCTURED_COMPOSITE(IM_TRIANGLE(3),4)");
     check_method(s, getfem::int_method_descriptor(s), 
3,bgeot::simplex_geotrans(2,1));
-    sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_TETRAHEDRON(5),3)");
+    snprintf(s,511,"IM_STRUCTURED_COMPOSITE(IM_TETRAHEDRON(5),3)");
     check_method(s, getfem::int_method_descriptor(s), 
5,bgeot::simplex_geotrans(3,1));
     /* // not implemented ...
-      sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_NC(4,2),3)");
+      snprintf(s,"IM_STRUCTURED_COMPOSITE(IM_NC(4,2),3)");
       check_method(s, getfem::int_method_descriptor(s), 
2,bgeot::simplex_geotrans(4,1));
     */
-    sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_QUAD(5),10)"); // QUAD(5) can't 
integrate Q5 polynomials, but it is sufficiently refined...
+    snprintf(s,511,"IM_STRUCTURED_COMPOSITE(IM_QUAD(5),10)"); // QUAD(5) can't 
integrate Q5 polynomials, but it is sufficiently refined...
     check_method(s, getfem::int_method_descriptor(s), 5, 
bgeot::parallelepiped_linear_geotrans(2));
-    sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_GAUSS_PARALLELEPIPED(3,2),2)");
+    snprintf(s,511,"IM_STRUCTURED_COMPOSITE(IM_GAUSS_PARALLELEPIPED(3,2),2)");
     check_method(s, getfem::int_method_descriptor(s), 2, 
bgeot::parallelepiped_linear_geotrans(3));
-    sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_GAUSS_PARALLELEPIPED(4,2),2)");
+    snprintf(s,511,"IM_STRUCTURED_COMPOSITE(IM_GAUSS_PARALLELEPIPED(4,2),2)");
     check_method(s, getfem::int_method_descriptor(s), 2, 
bgeot::parallelepiped_linear_geotrans(4));
     cerr << "FIXME:  structured_mesh not implemented for prisms\n";
-    /*sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_NC_PRISM(3,3),2)");
+    /*snprintf(s,"IM_STRUCTURED_COMPOSITE(IM_NC_PRISM(3,3),2)");
       check_method(s, getfem::int_method_descriptor(s), 2, 
bgeot::prism_geotrans(3,1));*/
-    sprintf(s, "IM_QUASI_POLAR(IM_GAUSS_PARALLELEPIPED(2,8), 2)");
+    snprintf(s,511, "IM_QUASI_POLAR(IM_GAUSS_PARALLELEPIPED(2,8), 2)");
     check_method(s, getfem::int_method_descriptor(s), 2, 
bgeot::simplex_geotrans(2,1));
-    sprintf(s, "IM_QUASI_POLAR(IM_PRODUCT(IM_TRIANGLE(4), IM_GAUSS1D(4)), 2, 
3)");
+    snprintf(s,511, "IM_QUASI_POLAR(IM_PRODUCT(IM_TRIANGLE(4), IM_GAUSS1D(4)), 
2, 3)");
     check_method(s, getfem::int_method_descriptor(s), 1, 
bgeot::simplex_geotrans(3,1));
-    sprintf(s, "IM_QUASI_POLAR(IM_PRODUCT(IM_TRIANGLE(4), IM_GAUSS1D(4)), 1)");
+    snprintf(s,511, "IM_QUASI_POLAR(IM_PRODUCT(IM_TRIANGLE(4), IM_GAUSS1D(4)), 
1)");
     check_method(s, getfem::int_method_descriptor(s), 1, 
bgeot::simplex_geotrans(3,1));
-    sprintf(s, "IM_QUASI_POLAR(IM_TETRAHEDRON(8), 2)");
+    snprintf(s,511, "IM_QUASI_POLAR(IM_TETRAHEDRON(8), 2)");
     check_method(s, getfem::int_method_descriptor(s), 2, 
bgeot::simplex_geotrans(3,1));
   }
 }
@@ -412,34 +412,34 @@ static void print_some_methods() {
   cout.precision(8);
     
   for (size_type i = 1; i < 15; ++i) {
-    sprintf(meth, "IM_GAUSS1D(%d)", int(2*(i - 1)));
+    snprintf(meth,499, "IM_GAUSS1D(%d)", int(2*(i - 1)));
     print_method(getfem::int_method_descriptor(meth));
   }
 
-  /*sprintf(meth, "IM_PRODUCT(IM_GAUSS1D(2),IM_GAUSS1D(2))");
+  /*snprintf(meth, "IM_PRODUCT(IM_GAUSS1D(2),IM_GAUSS1D(2))");
   print_method(getfem::int_method_descriptor(meth));
     
   for (size_type n = 1; n < 6; n++) {
     for (size_type i = 0; i < 3; ++i) {
-      sprintf(meth, "IM_NC(%d,%d)", int(n), int(i));
+      snprintf(meth,499, "IM_NC(%d,%d)", int(n), int(i));
       print_method(getfem::int_method_descriptor(meth));
     }
   }
 
-  sprintf(meth, "IM_NC(2, 2)");
+  snprintf(meth, "IM_NC(2, 2)");
   print_method(getfem::int_method_descriptor(meth));
 
-  sprintf(meth, "IM_STRUCTURED_COMPOSITE(IM_NC(2, 2), 1)");
+  snprintf(meth,499, "IM_STRUCTURED_COMPOSITE(IM_NC(2, 2), 1)");
   print_method(getfem::int_method_descriptor(meth));
 
-  sprintf(meth, "IM_STRUCTURED_COMPOSITE(IM_QUAD(2),3)");
+  snprintf(meth,499, "IM_STRUCTURED_COMPOSITE(IM_QUAD(2),3)");
   print_method(getfem::int_method_descriptor(meth));
   */
 
-  //sprintf(meth, "IM_QUASI_POLAR(IM_GAUSS_PARALLELEPIPED(2, 5),2)");
-  //sprintf(meth, "IM_QUASI_POLAR(IM_PRODUCT(IM_TRIANGLE(4), IM_GAUSS1D(4)), 
2, 3)");
-  //sprintf(meth, "IM_QUASI_POLAR(IM_TETRAHEDRON(3), 2)");
-  sprintf(meth, "IM_QUASI_POLAR(IM_PRODUCT(IM_TRIANGLE(4), IM_GAUSS1D(4)), 
1)");
+  //snprintf(meth,499, "IM_QUASI_POLAR(IM_GAUSS_PARALLELEPIPED(2, 5),2)");
+  //snprintf(meth,499, "IM_QUASI_POLAR(IM_PRODUCT(IM_TRIANGLE(4), 
IM_GAUSS1D(4)), 2, 3)");
+  //snprintf(meth,499, "IM_QUASI_POLAR(IM_TETRAHEDRON(3), 2)");
+  snprintf(meth,499, "IM_QUASI_POLAR(IM_PRODUCT(IM_TRIANGLE(4), 
IM_GAUSS1D(4)), 1)");
   print_method(getfem::int_method_descriptor(meth));
 
   print_method(getfem::classical_approx_im(bgeot::simplex_geotrans(3,2), 3));
@@ -451,7 +451,7 @@ int main(/* int argc, char **argv */) {
   FE_ENABLE_EXCEPT;        // Enable floating point exception for Nan.
 
   try {
-    /*char s[600]; 
sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_GAUSS_PARALLELEPIPED(3,2),2)");
+    /*char s[600]; 
snprintf(s,499,"IM_STRUCTURED_COMPOSITE(IM_GAUSS_PARALLELEPIPED(3,2),2)");
     //check_method(s, getfem::int_method_descriptor(s), 2, 
bgeot::parallelepiped_linear_geotrans(3));
     getfem::pfem pf = getfem::QK_fem(2,1); 
//getfem::classical_fem(bgeot::parallelepiped_linear_geotrans(2),1);
     return 100;*/
diff --git a/tests/nonlinear_elastostatic.cc b/tests/nonlinear_elastostatic.cc
index 2b6a2051..63ff7d3a 100644
--- a/tests/nonlinear_elastostatic.cc
+++ b/tests/nonlinear_elastostatic.cc
@@ -298,7 +298,7 @@ bool elastostatic_problem::solve(plain_vector &U) {
     getfem::standard_solve(model, iter);
 
     gmm::copy(model.real_variable("u"), U);
-    //char s[100]; sprintf(s, "step%d", step+1);
+    //char s[100]; snprintf(s, 100, "step%d", step+1);
 
     /* append the new displacement to the exported opendx file */
     exp.write_point_data(mf_u, U); //, s);
diff --git a/tests/poly.cc b/tests/poly.cc
index cacce253..aafc6e4c 100644
--- a/tests/poly.cc
+++ b/tests/poly.cc
@@ -29,7 +29,7 @@ std::string horner_print(bgeot::short_type degree, 
bgeot::power_index &mi,
   char s[1024];
   const char *xyz = "xyzabcdefghijklmnop";
   if (k == 0) {
-    sprintf(s, "P[%d]", int(mi.global_index()));
+    snprintf(s, 1023, "P[%d]", int(mi.global_index()));
     return s;
   } else {
     std::string str;
@@ -38,11 +38,11 @@ std::string horner_print(bgeot::short_type degree, 
bgeot::power_index &mi,
         mi[k-1] != bgeot::short_type(-1); (mi[k-1])--) {
       //res = horner(mi, k-1, de + mi[k-1], it) + v * res;
       if (str.size())
-       sprintf(s, "%s + %c*(%s)",
+       snprintf(s, 1023, "%s + %c*(%s)",
                horner_print(degree, 
mi,bgeot::short_type(k-1),bgeot::short_type(de+mi[k-1])).c_str(), xyz[k-1],
                str.c_str());
       else 
-       sprintf(s, "%s", horner_print(degree, 
mi,bgeot::short_type(k-1),bgeot::short_type(de+mi[k-1])).c_str());
+       snprintf(s, 1023, "%s", horner_print(degree, 
mi,bgeot::short_type(k-1),bgeot::short_type(de+mi[k-1])).c_str());
       str = s;
     }
     mi[k-1] = 0;
diff --git a/tests/schwarz_additive.cc b/tests/schwarz_additive.cc
index 9b58bd4e..2df0dac8 100644
--- a/tests/schwarz_additive.cc
+++ b/tests/schwarz_additive.cc
@@ -167,7 +167,7 @@ void pb_data::init(bgeot::md_param &params) {
   dal::bit_vector nn = mesh.convex_index(dim_type(N));
   char method[500];
   
-  sprintf(method, "FEM_PK(%d, %d)", N, K);
+  snprintf(method, 499, "FEM_PK(%d, %d)", N, K);
   mim.set_integration_method(nn, bgeot::dim_type(2*K));
   mef.set_finite_element(nn, getfem::fem_descriptor(method));
   mef_coarse.set_finite_element(mesh_coarse.convex_index(dim_type(N)),
diff --git a/tests/test_assembly.cc b/tests/test_assembly.cc
index 1f7381c5..53f278c2 100644
--- a/tests/test_assembly.cc
+++ b/tests/test_assembly.cc
@@ -573,8 +573,8 @@ static void test_new_assembly(int N, int NX, int pK) {
     
     getfem::mesh m;
 
-    char Ns[5]; sprintf(Ns, "%d", N);
-    char Ks[5]; sprintf(Ks, "%d", pK);
+    char Ns[5]; snprintf(Ns, 5, "%d", N);
+    char Ks[5]; snprintf(Ks, 5, "%d", pK);
     bgeot::pgeometric_trans pgt =
       bgeot::geometric_trans_descriptor
       ((std::string("GT_PK(") + Ns + ",1)").c_str());
diff --git a/tests/test_continuation.cc b/tests/test_continuation.cc
index bb6f41d0..48c3315a 100644
--- a/tests/test_continuation.cc
+++ b/tests/test_continuation.cc
@@ -144,7 +144,7 @@ bool state_problem::cont(plain_vector &U) {
     gmm::copy(gmm::sub_vector(Y, gmm::sub_interval(0, nb_dof)), U);
     lambda = Y[nb_dof];
     char s[100];
-    sprintf(s, ".T_Y%d", (int) PARAM.int_value("IND_BRANCH", "Branch"));
+    snprintf(s, 99, ".T_Y%d", (int) PARAM.int_value("IND_BRANCH", "Branch"));
     gmm::vecload(datapath + bp_rootfilename + s, Y);
     gmm::copy(gmm::scaled(gmm::sub_vector(Y, gmm::sub_interval(0, nb_dof)),
                          direction), T_U);
@@ -183,21 +183,21 @@ bool state_problem::cont(plain_vector &U) {
     sing_label = S.get_sing_label();
     if (sing_label.size() > 0) {
       if (sing_label == "limit point")
-       sprintf(s1, "Step %lu: %s", step + 1, sing_label.c_str());
+       snprintf(s1, 99, "Step %lu: %s", step + 1, sing_label.c_str());
       else if (sing_label == "smooth bifurcation point") {
        gmm::copy(S.get_x_sing(),
                  gmm::sub_vector(Y, gmm::sub_interval(0, nb_dof)));
        Y[nb_dof] = S.get_gamma_sing();
-       sprintf(s1, "continuation_step_%lu", step + 1);
+       snprintf(s1, 99, "continuation_step_%lu", step + 1);
        gmm::vecsave(datapath + s1 + "_bp.Y", Y);
        for (size_type i = 0; i < S.nb_tangent_sing(); i++) {
          gmm::copy(S.get_tx_sing(i),
                    gmm::sub_vector(Y, gmm::sub_interval(0, nb_dof)));
          Y[nb_dof] = S.get_tgamma_sing(i);
-         sprintf(s2, "_bp.T_Y%lu", i + 1);
+         snprintf(s2, 99, "_bp.T_Y%lu", i + 1);
          gmm::vecsave(datapath + s1 + s2, Y);
        }
-       sprintf(s1, "Step %lu: %s, %u branch(es) located", step + 1,
+       snprintf(s1, 99, "Step %lu: %s, %u branch(es) located", step + 1,
                sing_label.c_str(), (unsigned int) S.nb_tangent_sing());
       }
       sing_out.push_back(s1);
diff --git a/tests/test_interpolated_fem.cc b/tests/test_interpolated_fem.cc
index 54fdbdd6..b8498cdf 100644
--- a/tests/test_interpolated_fem.cc
+++ b/tests/test_interpolated_fem.cc
@@ -113,27 +113,27 @@ void lap_pb::init(void) {
   char meth[500];
   getfem::pintegration_method ppi;
   switch (integration) {
-  case 0  : sprintf(meth, "IM_EXACT_SIMPLEX(%d)", int(N)); break;
-  case 1  : sprintf(meth, "IM_NC(%d, %d)", int(N), int(KI)); break;
-  case 2  : sprintf(meth, "IM_GAUSS1D(%d)", int(KI)); break;
-  case 3  : sprintf(meth, "IM_STRUCTURED_COMPOSITE(IM_NC(%d, %d), %d)",
+  case 0  : snprintf(meth, 499, "IM_EXACT_SIMPLEX(%d)", int(N)); break;
+  case 1  : snprintf(meth, 499, "IM_NC(%d, %d)", int(N), int(KI)); break;
+  case 2  : snprintf(meth, 499, "IM_GAUSS1D(%d)", int(KI)); break;
+  case 3  : snprintf(meth, 499, "IM_STRUCTURED_COMPOSITE(IM_NC(%d, %d), %d)",
                    int(N), int(2*K), int(KI)); break;
-  case 11 : sprintf(meth, "IM_TRIANGLE(1)"); break;
-  case 12 : sprintf(meth, "IM_TRIANGLE(2)"); break;
-  case 13 : sprintf(meth, "IM_TRIANGLE(3)"); break;
-  case 14 : sprintf(meth, "IM_TRIANGLE(4)"); break;
-  case 15 : sprintf(meth, "IM_TRIANGLE(5)"); break;
-  case 16 : sprintf(meth, "IM_TRIANGLE(6)"); break;
-  case 17 : sprintf(meth, "IM_TRIANGLE(7)"); break;
-  case 21 : sprintf(meth, "IM_TETRAHEDRON(1)"); break;
-  case 22 : sprintf(meth, "IM_TETRAHEDRON(2)"); break;
-  case 23 : sprintf(meth, "IM_TETRAHEDRON(3)"); break;
-  case 25 : sprintf(meth, "IM_TETRAHEDRON(5)"); break;
+  case 11 : snprintf(meth, 499, "IM_TRIANGLE(1)"); break;
+  case 12 : snprintf(meth, 499, "IM_TRIANGLE(2)"); break;
+  case 13 : snprintf(meth, 499, "IM_TRIANGLE(3)"); break;
+  case 14 : snprintf(meth, 499, "IM_TRIANGLE(4)"); break;
+  case 15 : snprintf(meth, 499, "IM_TRIANGLE(5)"); break;
+  case 16 : snprintf(meth, 499, "IM_TRIANGLE(6)"); break;
+  case 17 : snprintf(meth, 499, "IM_TRIANGLE(7)"); break;
+  case 21 : snprintf(meth, 499, "IM_TETRAHEDRON(1)"); break;
+  case 22 : snprintf(meth, 499, "IM_TETRAHEDRON(2)"); break;
+  case 23 : snprintf(meth, 499, "IM_TETRAHEDRON(3)"); break;
+  case 25 : snprintf(meth, 499, "IM_TETRAHEDRON(5)"); break;
   default : GMM_ASSERT1(false, "Undefined integration method");
   }
   ppi = getfem::int_method_descriptor(meth);
   
-  sprintf(meth, "FEM_PK(%d,%d)", int(N), int(K));
+  snprintf(meth, 499, "FEM_PK(%d,%d)", int(N), int(K));
   nn = mesh1.convex_index(dim_type(N));
   mim1.set_integration_method(nn, ppi);
   mef1.set_finite_element(nn, getfem::fem_descriptor(meth));
diff --git a/tests/test_mat_elem.cc b/tests/test_mat_elem.cc
index f57c07a3..94847c6a 100644
--- a/tests/test_mat_elem.cc
+++ b/tests/test_mat_elem.cc
@@ -142,8 +142,8 @@ void lap_pb::init(void)
   switch (integration) {
   case 0 :
     switch (mesh_type) { 
-    case 0 : sprintf(meth, "IM_EXACT_SIMPLEX(%d)", int(N)); break;
-    case 1 : sprintf(meth, "IM_EXACT_PARALLELEPIPED(%d)", int(N)); break;
+    case 0 : snprintf(meth, 499, "IM_EXACT_SIMPLEX(%d)", int(N)); break;
+    case 1 : snprintf(meth, 499, "IM_EXACT_PARALLELEPIPED(%d)", int(N)); break;
     default : GMM_ASSERT1(false,
                          "Exact integration not allowed in this context");
     }
@@ -151,80 +151,80 @@ void lap_pb::init(void)
   case 1 :
     switch (mesh_type) { 
     case 0 : 
-      sprintf(meth, "IM_NC(%d,%d)", int(N), int(2*K));
+      snprintf(meth, 499, "IM_NC(%d,%d)", int(N), int(2*K));
       break;
     case 1 : 
-      sprintf(meth, "IM_NC_PARALLELEPIPED(%d,%d)", int(N), int(2*K));
+      snprintf(meth, 499, "IM_NC_PARALLELEPIPED(%d,%d)", int(N), int(2*K));
       break;
     case 2 :
-      sprintf(meth, "IM_NC_PRISM(%d,%d)", int(N), int(2*K));
+      snprintf(meth, 499, "IM_NC_PRISM(%d,%d)", int(N), int(2*K));
       break;
     }
     break;
   case 2 :
     if (mesh_type == 1)
-      sprintf(meth, "IM_GAUSS_PARALLELEPIPED(%d,%d)", int(N), int(KI));
+      snprintf(meth, 499, "IM_GAUSS_PARALLELEPIPED(%d,%d)", int(N), int(KI));
     else
       GMM_ASSERT1(false, "Product of 1D Gauss only for parallelepipeds");
     break;
   case 3 :
     if (mesh_type == 0) {
       if (N == 1)
-       sprintf(meth, "IM_STRUCTURED_COMPOSITE(IM_GAUSS1D(%d), %d)",2,int(KI));
+       snprintf(meth, 499, "IM_STRUCTURED_COMPOSITE(IM_GAUSS1D(%d), 
%d)",2,int(KI));
       else if (N == 2)
-       sprintf(meth, "IM_STRUCTURED_COMPOSITE(IM_TRIANGLE(%d), %d)",
+       snprintf(meth, 499, "IM_STRUCTURED_COMPOSITE(IM_TRIANGLE(%d), %d)",
                2,int(KI));
       else
-       sprintf(meth, "IM_STRUCTURED_COMPOSITE(IM_NC(%d, %d), %d)",
+       snprintf(meth, 499, "IM_STRUCTURED_COMPOSITE(IM_NC(%d, %d), %d)",
                int(N), int(2*K), int(KI));
     }
     else
       GMM_ASSERT1(false, "Composite integration only for simplexes");
     break;
-  case 11 : sprintf(meth, "IM_TRIANGLE(1)"); break;
-  case 12 : sprintf(meth, "IM_TRIANGLE(2)"); break;
-  case 13 : sprintf(meth, "IM_TRIANGLE(3)"); break;
-  case 14 : sprintf(meth, "IM_TRIANGLE(4)"); break;
-  case 15 : sprintf(meth, "IM_TRIANGLE(5)"); break;
-  case 16 : sprintf(meth, "IM_TRIANGLE(6)"); break;
-  case 17 : sprintf(meth, "IM_TRIANGLE(7)"); break;
-  case 21 : sprintf(meth, "IM_TETRAHEDRON(1)"); break;
-  case 22 : sprintf(meth, "IM_TETRAHEDRON(2)"); break;
-  case 23 : sprintf(meth, "IM_TETRAHEDRON(3)"); break;
-  case 25 : sprintf(meth, "IM_TETRAHEDRON(5)"); break;
-  case 32 : sprintf(meth, "IM_QUAD(2)"); break;
-  case 33 : sprintf(meth, "IM_QUAD(3)"); break;
-  case 35 : sprintf(meth, "IM_QUAD(5)"); break;
+  case 11 : snprintf(meth, 499, "IM_TRIANGLE(1)"); break;
+  case 12 : snprintf(meth, 499, "IM_TRIANGLE(2)"); break;
+  case 13 : snprintf(meth, 499, "IM_TRIANGLE(3)"); break;
+  case 14 : snprintf(meth, 499, "IM_TRIANGLE(4)"); break;
+  case 15 : snprintf(meth, 499, "IM_TRIANGLE(5)"); break;
+  case 16 : snprintf(meth, 499, "IM_TRIANGLE(6)"); break;
+  case 17 : snprintf(meth, 499, "IM_TRIANGLE(7)"); break;
+  case 21 : snprintf(meth, 499, "IM_TETRAHEDRON(1)"); break;
+  case 22 : snprintf(meth, 499, "IM_TETRAHEDRON(2)"); break;
+  case 23 : snprintf(meth, 499, "IM_TETRAHEDRON(3)"); break;
+  case 25 : snprintf(meth, 499, "IM_TETRAHEDRON(5)"); break;
+  case 32 : snprintf(meth, 499, "IM_QUAD(2)"); break;
+  case 33 : snprintf(meth, 499, "IM_QUAD(3)"); break;
+  case 35 : snprintf(meth, 499, "IM_QUAD(5)"); break;
   default : GMM_ASSERT1(false, "Undefined integration method");
   }
   ppi = getfem::int_method_descriptor(meth);
   getfem::pfem pfprinc = 0;
   switch (mesh_type) {
   case 0 :
-    sprintf(meth, "FEM_PK(%d,%d)", int(N), int(K));
+    snprintf(meth, 499, "FEM_PK(%d,%d)", int(N), int(K));
     pfprinc = getfem::fem_descriptor(meth);
     mim.set_integration_method(nn, ppi);
     mef.set_finite_element(nn, getfem::fem_descriptor(meth));
     mef_data.set_finite_element(nn, getfem::fem_descriptor(meth));
-    sprintf(meth, "FEM_PK(%d,%d)", int(N), 0);
+    snprintf(meth, 499, "FEM_PK(%d,%d)", int(N), 0);
     
     break;
   case 1 :
-    sprintf(meth, "FEM_QK(%d,%d)", int(N), K);
+    snprintf(meth, 499, "FEM_QK(%d,%d)", int(N), K);
     pfprinc = getfem::fem_descriptor(meth);
     mim.set_integration_method(nn, ppi);
     mef.set_finite_element(nn, getfem::fem_descriptor(meth)); 
     mef_data.set_finite_element(nn, getfem::fem_descriptor(meth));
-    sprintf(meth, "FEM_QK(%d,%d)", int(N), 0);
+    snprintf(meth, 499, "FEM_QK(%d,%d)", int(N), 0);
     
     break;
   case 2 :
-    sprintf(meth, "FEM_PK_PRISM(%d,%d)", int(N), K);
+    snprintf(meth, 499, "FEM_PK_PRISM(%d,%d)", int(N), K);
     pfprinc = getfem::fem_descriptor(meth);
     mim.set_integration_method(nn, ppi);
     mef.set_finite_element(nn, getfem::fem_descriptor(meth));
     mef_data.set_finite_element(nn, getfem::fem_descriptor(meth));
-    sprintf(meth, "FEM_PK_PRISM(%d,%d)", int(N), 0);
+    snprintf(meth, 499, "FEM_PK_PRISM(%d,%d)", int(N), 0);
     
     break;
   }
@@ -234,19 +234,19 @@ void lap_pb::init(void)
   case 0 : break;
 
   case 1 :
-    sprintf(meth, "FEM_HERMITE(1)");
+    snprintf(meth, 499, "FEM_HERMITE(1)");
     pfprinc = getfem::fem_descriptor(meth);
     mef.set_finite_element(nn, getfem::fem_descriptor(meth));
     break;
     
   case 2 :
-    sprintf(meth, "FEM_PK_HIERARCHICAL(%d, %d)", int(N), int(K));
+    snprintf(meth, 499, "FEM_PK_HIERARCHICAL(%d, %d)", int(N), int(K));
     pfprinc = getfem::fem_descriptor(meth);
     mef.set_finite_element(nn, getfem::fem_descriptor(meth));
     break;
 
   case 3 :
-    sprintf(meth, "FEM_PK_HIERARCHICAL_COMPOSITE(%d,%d,%d)", int(N), 1, 
int(K));
+    snprintf(meth, 499, "FEM_PK_HIERARCHICAL_COMPOSITE(%d,%d,%d)", int(N), 1, 
int(K));
     pfprinc = getfem::fem_descriptor(meth);
     mef.set_finite_element(nn, getfem::fem_descriptor(meth));
     break;
diff --git a/tests/wave_equation.cc b/tests/wave_equation.cc
index 3d5f656a..45b16457 100644
--- a/tests/wave_equation.cc
+++ b/tests/wave_equation.cc
@@ -332,7 +332,7 @@ bool wave_equation_problem::solve(void) {
 
     gmm::copy(model.real_variable("u"), U);
     if (PARAM.int_value("EXPORT_SOLUTION") != 0) {
-      char s[100]; sprintf(s, "step%d", int(t/dt)+1);
+      char s[100]; snprintf(s, 99, "step%d", int(t/dt)+1);
       gmm::vecsave(datafilename + s + ".U", U);
     }
 



reply via email to

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