mirror of
https://github.com/Z3Prover/z3
synced 2025-07-23 04:38:53 +00:00
fix leaks exposed by #3383
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
719c5dd911
commit
fd54408629
3 changed files with 14 additions and 0 deletions
|
@ -117,6 +117,8 @@ namespace simplex {
|
||||||
m_bland(false),
|
m_bland(false),
|
||||||
m_blands_rule_threshold(1000) {}
|
m_blands_rule_threshold(1000) {}
|
||||||
|
|
||||||
|
~simplex();
|
||||||
|
|
||||||
typedef typename matrix::row row;
|
typedef typename matrix::row row;
|
||||||
typedef typename matrix::row_iterator row_iterator;
|
typedef typename matrix::row_iterator row_iterator;
|
||||||
typedef typename matrix::col_iterator col_iterator;
|
typedef typename matrix::col_iterator col_iterator;
|
||||||
|
|
|
@ -28,6 +28,11 @@ namespace simplex {
|
||||||
template<typename Ext>
|
template<typename Ext>
|
||||||
const typename simplex<Ext>::var_t simplex<Ext>::null_var = UINT_MAX;
|
const typename simplex<Ext>::var_t simplex<Ext>::null_var = UINT_MAX;
|
||||||
|
|
||||||
|
template<typename Ext>
|
||||||
|
simplex<Ext>::~simplex() {
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
template<typename Ext>
|
template<typename Ext>
|
||||||
typename simplex<Ext>::row
|
typename simplex<Ext>::row
|
||||||
simplex<Ext>::add_row(var_t base_var, unsigned num_vars, var_t const* vars, numeral const* coeffs) {
|
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() {
|
void simplex<Ext>::reset() {
|
||||||
M.reset();
|
M.reset();
|
||||||
m_to_patch.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_vars.reset();
|
||||||
m_row2base.reset();
|
m_row2base.reset();
|
||||||
m_left_basis.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) {
|
void * small_object_allocator::allocate(size_t size) {
|
||||||
if (size == 0) return nullptr;
|
if (size == 0) return nullptr;
|
||||||
|
|
||||||
|
|
||||||
#if defined(Z3DEBUG) && !defined(_WINDOWS)
|
#if defined(Z3DEBUG) && !defined(_WINDOWS)
|
||||||
// Valgrind friendly
|
// Valgrind friendly
|
||||||
return memory::allocate(size);
|
return memory::allocate(size);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue