File tree 2 files changed +10
-1
lines changed
2 files changed +10
-1
lines changed Original file line number Diff line number Diff line change @@ -340,7 +340,8 @@ namespace smt {
340
340
341
341
void tmp_enode::set_capacity (unsigned new_capacity) {
342
342
SASSERT (new_capacity > m_capacity);
343
- dealloc_svect (m_enode_data);
343
+ if (m_enode_data)
344
+ dealloc_svect (m_enode_data);
344
345
m_capacity = new_capacity;
345
346
unsigned sz = sizeof (enode) + m_capacity * sizeof (enode*);
346
347
m_enode_data = alloc_svect (char , sz);
@@ -358,12 +359,19 @@ namespace smt {
358
359
if (num_args > m_capacity)
359
360
set_capacity (num_args * 2 );
360
361
enode * r = get_enode ();
362
+ if (m_app.get_app ()->get_decl () != f) {
363
+ r->m_func_decl_id = UINT_MAX;
364
+ }
361
365
m_app.set_decl (f);
362
366
m_app.set_num_args (num_args);
363
367
r->m_commutative = num_args == 2 && f->is_commutative ();
364
368
memcpy (get_enode ()->m_args , args, sizeof (enode*)*num_args);
365
369
return r;
366
370
}
367
371
372
+ void tmp_enode::reset () {
373
+ get_enode ()->m_func_decl_id = UINT_MAX;
374
+ }
375
+
368
376
};
369
377
Original file line number Diff line number Diff line change @@ -465,6 +465,7 @@ namespace smt {
465
465
tmp_enode ();
466
466
~tmp_enode ();
467
467
enode * set (func_decl * f, unsigned num_args, enode * const * args);
468
+ void reset ();
468
469
};
469
470
470
471
inline mk_pp pp (enode* n, ast_manager& m) { return mk_pp (n->get_expr (), m); }
You can’t perform that action at this time.
0 commit comments