From aff21017e4396aed8cf7537a14fe540ae5b0c374 Mon Sep 17 00:00:00 2001 From: Silvio Traversaro Date: Wed, 13 Jan 2021 18:31:16 +0100 Subject: [PATCH 1/2] Use c_free for memory that has been allocated with c_malloc and c_calloc --- osqp_mex.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/osqp_mex.cpp b/osqp_mex.cpp index 01989f4..032877b 100755 --- a/osqp_mex.cpp +++ b/osqp_mex.cpp @@ -308,17 +308,17 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) //cleanup temporary structures // Data - if (data->q) mxFree(data->q); - if (data->l) mxFree(data->l); - if (data->u) mxFree(data->u); - if (Px) mxFree(Px); - if (Pi) mxFree(Pi); - if (Pp) mxFree(Pp); - if (data->P) mxFree(data->P); - if (Ax) mxFree(Ax); - if (Ai) mxFree(Ai); - if (Ap) mxFree(Ap); - if (data->A) mxFree(data->A); + if (data->q) c_free(data->q); + if (data->l) c_free(data->l); + if (data->u) c_free(data->u); + if (Px) c_free(Px); + if (Pi) c_free(Pi); + if (Pp) c_free(Pp); + if (data->P) c_free(data->P); + if (Ax) c_free(Ax); + if (Ai) c_free(Ai); + if (Ap) c_free(Ap); + if (data->A) c_free(data->A); if (data) mxFree(data); // Settings if (settings) mxFree(settings); From 09faf01f42f7a73fac0b03332e6b0f6976a943c8 Mon Sep 17 00:00:00 2001 From: Silvio Traversaro Date: Tue, 1 Mar 2022 12:31:07 +0100 Subject: [PATCH 2/2] Use c_free for memory allocated with c_malloc The memory was allocated indirectly via copyToCfloatVector and copyToCfloatVector functions --- osqp_mex.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/osqp_mex.cpp b/osqp_mex.cpp index 032877b..5506e1d 100755 --- a/osqp_mex.cpp +++ b/osqp_mex.cpp @@ -453,13 +453,13 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } // Free vectors - if(!mxIsEmpty(q)) mxFree(q_vec); - if(!mxIsEmpty(l)) mxFree(l_vec); - if(!mxIsEmpty(u)) mxFree(u_vec); - if(!mxIsEmpty(Px)) mxFree(Px_vec); - if(!mxIsEmpty(Ax)) mxFree(Ax_vec); - if(!mxIsEmpty(Px_idx)) mxFree(Px_idx_vec); - if(!mxIsEmpty(Ax_idx)) mxFree(Ax_idx_vec); + if(!mxIsEmpty(q)) c_free(q_vec); + if(!mxIsEmpty(l)) c_free(l_vec); + if(!mxIsEmpty(u)) c_free(u_vec); + if(!mxIsEmpty(Px)) c_free(Px_vec); + if(!mxIsEmpty(Ax)) c_free(Ax_vec); + if(!mxIsEmpty(Px_idx)) c_free(Px_idx_vec); + if(!mxIsEmpty(Ax_idx)) c_free(Ax_idx_vec); // Report errors (if any) switch (exitflag) { @@ -513,8 +513,8 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) osqp_warm_start(osqpData->work, x_vec, y_vec); // Free vectors - if(!mxIsEmpty(x)) mxFree(x_vec); - if(!mxIsEmpty(y)) mxFree(y_vec); + if(!mxIsEmpty(x)) c_free(x_vec); + if(!mxIsEmpty(y)) c_free(y_vec); return; } @@ -544,7 +544,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) osqp_warm_start_x(osqpData->work, x_vec); // Free vectors - if(!mxIsEmpty(x)) mxFree(x_vec); + if(!mxIsEmpty(x)) c_free(x_vec); return; } @@ -574,7 +574,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) osqp_warm_start_y(osqpData->work, y_vec); // Free vectors - if(!mxIsEmpty(y)) mxFree(y_vec); + if(!mxIsEmpty(y)) c_free(y_vec); return; }