diff --git a/include/cantera/equil/MultiPhase.h b/include/cantera/equil/MultiPhase.h index 0971fe117..6b8bf2ebd 100644 --- a/include/cantera/equil/MultiPhase.h +++ b/include/cantera/equil/MultiPhase.h @@ -65,7 +65,7 @@ public: //! Destructor. Does nothing. Class MultiPhase does not take "ownership" //! (that is, responsibility for destroying) the phase objects. - virtual ~MultiPhase() = default; + virtual ~MultiPhase(); //! Add a vector of phases to the mixture /*! diff --git a/src/equil/MultiPhase.cpp b/src/equil/MultiPhase.cpp index a5b967904..fd6c7a0a3 100644 --- a/src/equil/MultiPhase.cpp +++ b/src/equil/MultiPhase.cpp @@ -20,6 +20,13 @@ using namespace std; namespace Cantera { +MultiPhase::~MultiPhase() +{ + for (size_t i = 0; i < m_phase.size(); i++) { + m_phase[i]->removeSpeciesLock(); + } +} + void MultiPhase::addPhases(MultiPhase& mix) { for (size_t n = 0; n < mix.nPhases(); n++) { @@ -101,6 +108,9 @@ void MultiPhase::addPhase(ThermoPhase* p, double moles) m_Tmin = std::max(p->minTemp(), m_Tmin); m_Tmax = std::min(p->maxTemp(), m_Tmax); } + + // lock species list + p->addSpeciesLock(); } void MultiPhase::init()