diff --git a/prism/include/dv.h b/prism/include/dv.h index 79fba2a4..f9f48d28 100644 --- a/prism/include/dv.h +++ b/prism/include/dv.h @@ -71,7 +71,8 @@ double sum_double_vector_over_bdd(DdManager *ddman, double *vec, DdNode *filter, double sum_double_vector_over_mtbdd(DdManager *ddman, double *vec, DdNode *mult, DdNode **vars, int num_vars, ODDNode *odd); DistVector *double_vector_to_dist(double *v, int n); -void free_dist_vector(DistVector *dv); +void free_dist_vector(DistVector *&dv); +void free_dv_or_dist_vector(double *&v, DistVector *&dv); //------------------------------------------------------------------------------ diff --git a/prism/src/dv/dv.cc b/prism/src/dv/dv.cc index da8bd302..5a54c13c 100644 --- a/prism/src/dv/dv.cc +++ b/prism/src/dv/dv.cc @@ -455,11 +455,22 @@ DistVector *double_vector_to_dist(double *v, int n) // free distinct vector struct -void free_dist_vector(DistVector *dv) +void free_dist_vector(DistVector *&dv) { free(dv->dist); free(dv->ptrs); free(dv); + dv = NULL; +} + +//------------------------------------------------------------------------------ + +// delete double array, distinct vector struct, or both + +void free_dv_or_dist_vector(double *&v, DistVector *&dv) +{ + if (v) { free(v); v = NULL; } + if (dv) { free_dist_vector(dv); dv = NULL; } } //------------------------------------------------------------------------------