3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-15 05:18:44 +00:00

fix leaks exposed by #3383

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-03-17 13:01:46 -07:00
parent 719c5dd911
commit fd54408629
3 changed files with 14 additions and 0 deletions

View file

@ -117,6 +117,8 @@ namespace simplex {
m_bland(false),
m_blands_rule_threshold(1000) {}
~simplex();
typedef typename matrix::row row;
typedef typename matrix::row_iterator row_iterator;
typedef typename matrix::col_iterator col_iterator;

View file

@ -28,6 +28,11 @@ namespace simplex {
template<typename Ext>
const typename simplex<Ext>::var_t simplex<Ext>::null_var = UINT_MAX;
template<typename Ext>
simplex<Ext>::~simplex() {
reset();
}
template<typename Ext>
typename simplex<Ext>::row
simplex<Ext>::add_row(var_t base_var, unsigned num_vars, var_t const* vars, numeral const* coeffs) {
@ -314,6 +319,12 @@ namespace simplex {
void simplex<Ext>::reset() {
M.reset();
m_to_patch.reset();
for (var_info& v : m_vars) {
em.del(v.m_value);
em.del(v.m_lower);
em.del(v.m_upper);
m.del(v.m_base_coeff);
}
m_vars.reset();
m_row2base.reset();
m_left_basis.reset();

View file

@ -97,6 +97,7 @@ void small_object_allocator::deallocate(size_t size, void * p) {
void * small_object_allocator::allocate(size_t size) {
if (size == 0) return nullptr;
#if defined(Z3DEBUG) && !defined(_WINDOWS)
// Valgrind friendly
return memory::allocate(size);