From 3df045c7e9cb20ef6c5a49367d03568b56c9cb01 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Wed, 31 Aug 2022 19:07:38 +0200 Subject: [PATCH] Make sure the qrtree structure is fully initialized in all cases --- src/hqr.c | 1 + src/svd.c | 1 + src/systolic.c | 8 +++++--- src/tphqr.c | 1 + src/tshqr.c | 1 + 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/hqr.c b/src/hqr.c index b3d5c95..02c94c0 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 d88a6a1..08a893f 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 e74fb5d..81410f6 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 7d66431..f9c4e63 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 e096169..2bcbfb4 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; -- GitLab