From e7ecdc1be0b2a5bb8ec3b3f622a46a11f87d1d6c Mon Sep 17 00:00:00 2001 From: Matthew Fernandez Date: Fri, 5 Nov 2021 17:09:15 -0700 Subject: [PATCH] remove guards on calls to 'free' It is a no-op to call `free(NULL)`, so we can rephrase this code into something more concise and simple. --- lib/edgepaint/edge_distinct_coloring.c | 2 +- lib/expr/exparse.y | 3 +- lib/neatogen/overlap.c | 6 ++-- lib/sfdpgen/Multilevel.c | 14 ++++---- lib/sfdpgen/post_process.c | 2 +- lib/sfdpgen/sfdpinit.c | 2 +- lib/sfdpgen/spring_electrical.c | 44 ++++++++++++-------------- lib/sparse/DotIO.c | 2 +- lib/sparse/LinkedList.c | 4 +-- lib/sparse/QuadTree.c | 2 +- lib/sparse/SparseMatrix.c | 38 +++++++++++----------- 11 files changed, 56 insertions(+), 63 deletions(-) diff --git a/lib/edgepaint/edge_distinct_coloring.c b/lib/edgepaint/edge_distinct_coloring.c index 48fa75777..c7fd27c5a 100644 --- a/lib/edgepaint/edge_distinct_coloring.c +++ b/lib/edgepaint/edge_distinct_coloring.c @@ -258,7 +258,7 @@ Agraph_t* edge_distinct_coloring(char *color_scheme, char *lightness, Agraph_t* FREE(x); if (xsplines){ for (i = 0; i < ne; i++){ - if (xsplines[i]) FREE(xsplines[i]); + FREE(xsplines[i]); } FREE(xsplines); } diff --git a/lib/expr/exparse.y b/lib/expr/exparse.y index f49ffd2ba..796376d1e 100644 --- a/lib/expr/exparse.y +++ b/lib/expr/exparse.y @@ -368,8 +368,7 @@ statement : '{' statement_list '}' $$ = exnewnode(expr.program, $1->index, 1, INTEGER, $3, exnewnode(expr.program, DEFAULT, 1, 0, sw->defcase, sw->firstcase)); expr.swstate = expr.swstate->prev; - if (sw->base) - free(sw->base); + free(sw->base); if (sw != &swstate) free(sw); expr.declare = 0; diff --git a/lib/neatogen/overlap.c b/lib/neatogen/overlap.c index 8828c1889..1a54f759e 100644 --- a/lib/neatogen/overlap.c +++ b/lib/neatogen/overlap.c @@ -261,9 +261,9 @@ static void relative_position_constraints_delete(void *d){ relative_position_constraints data; if (!d) return; data = (relative_position_constraints) d; - if (data->irn) FREE(data->irn); - if (data->jcn) FREE(data->jcn); - if (data->val) FREE(data->val); + FREE(data->irn); + FREE(data->jcn); + FREE(data->val); /* other stuff inside relative_position_constraints is assed back to the user hence no need to deallocator*/ FREE(d); } diff --git a/lib/sfdpgen/Multilevel.c b/lib/sfdpgen/Multilevel.c index f51093592..f6432268f 100644 --- a/lib/sfdpgen/Multilevel.c +++ b/lib/sfdpgen/Multilevel.c @@ -1074,15 +1074,15 @@ static void Multilevel_coarsen_internal(SparseMatrix A, SparseMatrix *cA, Sparse goto RETURN; } RETURN: - if (matching) FREE(matching); - if (vset) FREE(vset); - if (irn) FREE(irn); - if (jcn) FREE(jcn); - if (val) FREE(val); + FREE(matching); + FREE(vset); + FREE(irn); + FREE(jcn); + FREE(val); if (B) SparseMatrix_delete(B); - if(cluster) FREE(cluster); - if(clusterp) FREE(clusterp); + FREE(cluster); + FREE(clusterp); } void Multilevel_coarsen(SparseMatrix A, SparseMatrix *cA, SparseMatrix D, SparseMatrix *cD, real *node_wgt, real **cnode_wgt, diff --git a/lib/sfdpgen/post_process.c b/lib/sfdpgen/post_process.c index b00d73c5c..66e30550d 100644 --- a/lib/sfdpgen/post_process.c +++ b/lib/sfdpgen/post_process.c @@ -748,7 +748,7 @@ void StressMajorizationSmoother_delete(StressMajorizationSmoother sm){ if (!sm) return; if (sm->Lw) SparseMatrix_delete(sm->Lw); if (sm->Lwd) SparseMatrix_delete(sm->Lwd); - if (sm->lambda) FREE(sm->lambda); + FREE(sm->lambda); if (sm->data) sm->data_deallocator(sm->data); FREE(sm); } diff --git a/lib/sfdpgen/sfdpinit.c b/lib/sfdpgen/sfdpinit.c index d2e061a62..e4b6046c1 100644 --- a/lib/sfdpgen/sfdpinit.c +++ b/lib/sfdpgen/sfdpinit.c @@ -151,7 +151,7 @@ static void sfdpLayout(graph_t * g, spring_electrical_control ctrl, free(pos); SparseMatrix_delete (A); if (D) SparseMatrix_delete (D); - if (edge_label_nodes) FREE(edge_label_nodes); + FREE(edge_label_nodes); } static int diff --git a/lib/sfdpgen/spring_electrical.c b/lib/sfdpgen/spring_electrical.c index 200034109..7806b879d 100644 --- a/lib/sfdpgen/spring_electrical.c +++ b/lib/sfdpgen/spring_electrical.c @@ -902,14 +902,13 @@ static void spring_electrical_embedding_slow(int dim, SparseMatrix A0, spring_el oned_optimizer_delete(qtree_level_optimizer); ctrl->max_qtree_level = max_qtree_level; } - if (xold) FREE(xold); + FREE(xold); if (A != A0) SparseMatrix_delete(A); - if (f) FREE(f); - if (center) FREE(center); - if (supernode_wgts) FREE(supernode_wgts); - if (distances) FREE(distances); + FREE(f); + FREE(center); + FREE(supernode_wgts); + FREE(distances); FREE(force); - } @@ -1150,13 +1149,12 @@ void spring_electrical_embedding(int dim, SparseMatrix A0, spring_electrical_con oned_optimizer_delete(qtree_level_optimizer); ctrl->max_qtree_level = max_qtree_level; } - if (xold) FREE(xold); + FREE(xold); if (A != A0) SparseMatrix_delete(A); - if (f) FREE(f); - if (center) FREE(center); - if (supernode_wgts) FREE(supernode_wgts); - if (distances) FREE(distances); - + FREE(f); + FREE(center); + FREE(supernode_wgts); + FREE(distances); } static void scale_coord(int n, int dim, real *x, int *id, int *jd, real *d, real dj){ @@ -1433,13 +1431,12 @@ static void spring_maxent_embedding(int dim, SparseMatrix A0, SparseMatrix D, sp if (ctrl->beautify_leaves) beautify_leaves(dim, A, x); RETURN: - if (xold) FREE(xold); + FREE(xold); if (A != A0) SparseMatrix_delete(A); - if (f) FREE(f); - if (center) FREE(center); - if (supernode_wgts) FREE(supernode_wgts); - if (distances) FREE(distances); - + FREE(f); + FREE(center); + FREE(supernode_wgts); + FREE(distances); } @@ -1631,13 +1628,12 @@ void spring_electrical_spring_embedding(int dim, SparseMatrix A0, SparseMatrix D if (ctrl->beautify_leaves) beautify_leaves(dim, A, x); RETURN: - if (xold) FREE(xold); + FREE(xold); if (A != A0) SparseMatrix_delete(A); - if (f) FREE(f); - if (center) FREE(center); - if (supernode_wgts) FREE(supernode_wgts); - if (distances) FREE(distances); - + FREE(f); + FREE(center); + FREE(supernode_wgts); + FREE(distances); } diff --git a/lib/sparse/DotIO.c b/lib/sparse/DotIO.c index bc06d5a5c..717059ff0 100644 --- a/lib/sparse/DotIO.c +++ b/lib/sparse/DotIO.c @@ -260,7 +260,7 @@ done: FREE(J); FREE(val); } - if (valD) FREE(valD); + FREE(valD); return A; } diff --git a/lib/sparse/LinkedList.c b/lib/sparse/LinkedList.c index e542b900c..34808c45b 100644 --- a/lib/sparse/LinkedList.c +++ b/lib/sparse/LinkedList.c @@ -37,7 +37,7 @@ void SingleLinkedList_delete(SingleLinkedList head, void (*linklist_deallocator do { next = head->next; if (head->data) linklist_deallocator(head->data); - if (head) FREE(head); + FREE(head); head = next; } while (head); @@ -91,7 +91,7 @@ void DoubleLinkedList_delete(DoubleLinkedList head, void (*linklist_deallocator do { next = head->next; if (head->data) linklist_deallocator(head->data); - if (head) FREE(head); + FREE(head); head = next; } while (head); diff --git a/lib/sparse/QuadTree.c b/lib/sparse/QuadTree.c index b99974e6f..b10e9ff4b 100644 --- a/lib/sparse/QuadTree.c +++ b/lib/sparse/QuadTree.c @@ -421,7 +421,7 @@ void QuadTree_delete(QuadTree q){ dim = q->dim; FREE(q->center); FREE(q->average); - if (q->data) FREE(q->data); + FREE(q->data); if (q->qts){ for (i = 0; i < 1<qts[i]); diff --git a/lib/sparse/SparseMatrix.c b/lib/sparse/SparseMatrix.c index 9b72848e9..db181d3c8 100644 --- a/lib/sparse/SparseMatrix.c +++ b/lib/sparse/SparseMatrix.c @@ -407,9 +407,9 @@ void SparseMatrix_delete(SparseMatrix A){ /* return a sparse matrix skeleton with row dimension m and storage nz. If nz == 0, only row pointers are allocated */ if (!A) return; - if (A->ia) FREE(A->ia); - if (A->ja) FREE(A->ja); - if (A->a) FREE(A->a); + FREE(A->ia); + FREE(A->ja); + FREE(A->a); FREE(A); } static void SparseMatrix_print_csr(char *c, SparseMatrix A){ @@ -994,7 +994,7 @@ SparseMatrix SparseMatrix_add(SparseMatrix A, SparseMatrix B){ C->nz = nz; RETURN: - if (mask) FREE(mask); + FREE(mask); return C; } @@ -2003,7 +2003,7 @@ void SparseMatrix_weakly_connected_components(SparseMatrix A0, int *ncomp, int * } if (A != A0) SparseMatrix_delete(A); - if (levelset_ptr) FREE(levelset_ptr); + FREE(levelset_ptr); FREE(mask); } @@ -2289,11 +2289,10 @@ SparseMatrix SparseMatrix_get_augmented(SparseMatrix A){ B = SparseMatrix_from_coordinate_arrays(nz, m + n, m + n, irn, jcn, val, type, A->size); SparseMatrix_set_symmetric(B); SparseMatrix_set_pattern_symmetric(B); - if (irn) FREE(irn); - if (jcn) FREE(jcn); - if (val) FREE(val); + FREE(irn); + FREE(jcn); + FREE(val); return B; - } SparseMatrix SparseMatrix_to_square_matrix(SparseMatrix A, int bipartite_options){ @@ -2477,7 +2476,7 @@ SparseMatrix SparseMatrix_set_entries_to_real_one(SparseMatrix A){ real *a; int i; - if (A->a) FREE(A->a); + FREE(A->a); A->a = MALLOC(sizeof(real)*((size_t)A->nz)); a = (real*) (A->a); for (i = 0; i < A->nz; i++) a[i] = 1.; @@ -2555,14 +2554,13 @@ int SparseMatrix_distance_matrix(SparseMatrix D0, int weighted, real **dist0){ } } - if (levelset_ptr) FREE(levelset_ptr); - if (levelset) FREE(levelset); - if (mask) FREE(mask); + FREE(levelset_ptr); + FREE(levelset); + FREE(mask); if (D != D0) SparseMatrix_delete(D); - if (list) FREE(list); + FREE(list); return flag; - } SparseMatrix SparseMatrix_distance_matrix_khops(int khops, SparseMatrix D0, int weighted){ @@ -2640,13 +2638,13 @@ SparseMatrix SparseMatrix_distance_matrix_khops(int khops, SparseMatrix D0, int C = SparseMatrix_from_coordinate_format(B); SparseMatrix_delete(B); - if (levelset_ptr) FREE(levelset_ptr); - if (levelset) FREE(levelset); - if (mask) FREE(mask); - if (dist) FREE(dist); + FREE(levelset_ptr); + FREE(levelset); + FREE(mask); + FREE(dist); if (D != D0) SparseMatrix_delete(D); - if (list) FREE(list); + FREE(list); /* I can not find a reliable way to make the matrix symmetric. Right now I use a mask array to limit consider of only nodes with in k hops, but even this is not symmetric. e.g., . 10 10 10 10 -- 2.50.0