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:
parent
719c5dd911
commit
fd54408629
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue