diff --git a/src/hqr.c b/src/hqr.c
index b3d5c95bfd8a614d59b911ba1882a58c666735d5..02c94c07cbf1fd5dc00183978744c8089b5af9e4 100644
--- a/src/hqr.c
+++ b/src/hqr.c
@@ -784,6 +784,7 @@ libhqr_initfct_hqr( libhqr_tree_t *qrtree,
 
     minMN = libhqr_imin(A->mt, A->nt);
 
+    memset( qrtree, 0, sizeof( libhqr_tree_t ) );
     qrtree->domino     = domino;
     qrtree->getnbgeqrf = hqr_getnbgeqrf;
     qrtree->getm       = hqr_getm;
diff --git a/src/svd.c b/src/svd.c
index d88a6a1dfd13637a8a6146ff9c441afedc343d96..08a893f9c6c0757d0c4c902fa729436efdf9301d 100644
--- a/src/svd.c
+++ b/src/svd.c
@@ -604,6 +604,7 @@ libhqr_initfct_svd( libhqr_tree_t *qrtree,
     p = libhqr_imax( p, 1 );
     minMN = libhqr_imin(A->mt, A->nt);
 
+    memset( qrtree, 0, sizeof( libhqr_tree_t ) );
     qrtree->getnbgeqrf = svd_getnbgeqrf;
     qrtree->getm       = svd_getm;
     qrtree->geti       = svd_geti;
diff --git a/src/systolic.c b/src/systolic.c
index e74fb5dcb208c748943f9144c3f2a96e4a9335a4..81410f62e864ec3a661f2a5287e785e08171dfd8 100644
--- a/src/systolic.c
+++ b/src/systolic.c
@@ -392,6 +392,7 @@ libhqr_initfct_sys( libhqr_tree_t         *qrtree,
         return -5;
     }
 
+    memset( qrtree, 0, sizeof( libhqr_tree_t ) );
     qrtree->getnbgeqrf = systolic_getnbgeqrf;
     qrtree->getm       = systolic_getm;
     qrtree->geti       = systolic_geti;
@@ -405,9 +406,10 @@ libhqr_initfct_sys( libhqr_tree_t         *qrtree,
     qrtree->mt    = ( trans == LIBHQR_QR ) ? A->mt : A->nt;
     qrtree->nt    = libhqr_imin( A->mt, A->nt );
 
-    qrtree->a    = libhqr_imax( q, 1 );
-    qrtree->p    = libhqr_imax( p, 1 );
-    qrtree->args = NULL;
+    qrtree->a      = libhqr_imax( q, 1 );
+    qrtree->p      = libhqr_imax( p, 1 );
+    qrtree->domino = 0;
+    qrtree->args   = NULL;
 
     return 0;
 }
diff --git a/src/tphqr.c b/src/tphqr.c
index 7d664315f66ba5d64440d018f024760d717beb9a..f9c4e630b90d7ab3f200495b1d6a649987d24fde 100644
--- a/src/tphqr.c
+++ b/src/tphqr.c
@@ -109,6 +109,7 @@ libhqr_initmtx_tphqr( libhqr_tree_t         *qrtree,
         p = libhqr_imax( p, 1 );
     }
 
+    memset( qrtree, 0, sizeof( libhqr_tree_t ) );
     libhqr_rdmtx_initfct( qrtree );
     qrtree->init       = LIBHQR_QRTREE_MTX;
     qrtree->facto      = trans;
diff --git a/src/tshqr.c b/src/tshqr.c
index e0961698a324282ca01bc4df1f21991a13e90463..2bcbfb4ef9ff24657c8164a2227d9e5c055521b0 100644
--- a/src/tshqr.c
+++ b/src/tshqr.c
@@ -60,6 +60,7 @@ libhqr_initmtx_tshqr( libhqr_tree_t         *qrtree,
         return -3;
     }
 
+    memset( qrtree, 0, sizeof( libhqr_tree_t ) );
     libhqr_rdmtx_initfct( qrtree );
     qrtree->init       = LIBHQR_QRTREE_MTX;
     qrtree->facto      = trans;