diff --git a/avogadro/qtplugins/forcefield/forcefield.cpp b/avogadro/qtplugins/forcefield/forcefield.cpp index 85a0b426b5..d7fe113b7e 100644 --- a/avogadro/qtplugins/forcefield/forcefield.cpp +++ b/avogadro/qtplugins/forcefield/forcefield.cpp @@ -230,13 +230,11 @@ void Forcefield::setupMethod() m_methodName = recommendedForceField(); } - if (m_method == nullptr) { - // we have to create the calculator - m_method = Calc::EnergyManager::instance().model(m_methodName); - } else if (m_method->identifier() != m_methodName) { + if (m_method != nullptr) { delete m_method; // delete the previous one - m_method = Calc::EnergyManager::instance().model(m_methodName); } + m_method = Calc::EnergyManager::instance().model(m_methodName); + if (m_method != nullptr) m_method->setMolecule(m_molecule); } diff --git a/avogadro/qtplugins/forcefield/obenergy.cpp b/avogadro/qtplugins/forcefield/obenergy.cpp index 9ca9f7cec6..332698b9d0 100644 --- a/avogadro/qtplugins/forcefield/obenergy.cpp +++ b/avogadro/qtplugins/forcefield/obenergy.cpp @@ -35,8 +35,8 @@ class OBEnergy::Private ~Private() { - delete m_obmol; - delete m_forceField; + if (m_obmol != nullptr) + delete m_obmol; } }; diff --git a/avogadro/qtplugins/forcefield/obmmenergy.cpp b/avogadro/qtplugins/forcefield/obmmenergy.cpp index 49c67194be..8a7e9a3c0b 100644 --- a/avogadro/qtplugins/forcefield/obmmenergy.cpp +++ b/avogadro/qtplugins/forcefield/obmmenergy.cpp @@ -70,7 +70,8 @@ OBMMEnergy::OBMMEnergy(const std::string& method) OBMMEnergy::~OBMMEnergy() { delete m_inputFormat; - delete m_process; + if (m_process != nullptr) + delete m_process; } bool OBMMEnergy::acceptsRadicals() const