Fix a memory leak in cxsparse.cc Thanks to Alexander Mordvintsev for reporting it. Change-Id: Ia872be42ce80209e46722fc16a928496cf97e256
diff --git a/internal/ceres/cxsparse.cc b/internal/ceres/cxsparse.cc index 21c98e0..19fa17c 100644 --- a/internal/ceres/cxsparse.cc +++ b/internal/ceres/cxsparse.cc
@@ -116,12 +116,12 @@ return cs_compress(&tsm_wrapper); } -void CXSparse::Free(cs_di* factor) { - cs_free(factor); +void CXSparse::Free(cs_di* sparse_matrix) { + cs_di_spfree(sparse_matrix); } -void CXSparse::Free(cs_dis* factor) { - cs_sfree(factor); +void CXSparse::Free(cs_dis* symbolic_factorization) { + cs_di_sfree(symbolic_factorization); } } // namespace internal
diff --git a/internal/ceres/cxsparse.h b/internal/ceres/cxsparse.h index d3b64fc..dd5eadc 100644 --- a/internal/ceres/cxsparse.h +++ b/internal/ceres/cxsparse.h
@@ -72,9 +72,8 @@ // The returned matrix should be deallocated with Free when not used anymore. cs_dis* AnalyzeCholesky(cs_di* A); - // Deallocates the memory of a matrix obtained from AnalyzeCholesky. - void Free(cs_di* factor); - void Free(cs_dis* factor); + void Free(cs_di* sparse_matrix); + void Free(cs_dis* symbolic_factorization); private: // Cached scratch space