diff --git a/Code/Mantid/API/src/WorkspaceGroup.cpp b/Code/Mantid/API/src/WorkspaceGroup.cpp index 35dd01e066c3d80cc82dd89afa4f0f295a739f6f..5ace3700911ae5236ae968aaa81823a03bd7c69b 100644 --- a/Code/Mantid/API/src/WorkspaceGroup.cpp +++ b/Code/Mantid/API/src/WorkspaceGroup.cpp @@ -71,15 +71,13 @@ void WorkspaceGroup::remove(const std::string& name) void WorkspaceGroup::deepRemoveAll() { Mantid::API::AnalysisDataService::Instance().notificationCenter.removeObserver(m_deleteObserver); - // First member of the group is itself so skip it through and delete - // but skipping itself - size_t nentries = m_wsNames.size(); - for( size_t i = nentries - 1; i > 0; --i) - { - AnalysisDataService::Instance().remove(m_wsNames[i]); - remove(m_wsNames[i]); - } - m_wsNames.clear(); + while (!m_wsNames.empty()) + { + AnalysisDataService::Instance().remove(m_wsNames.back()); + m_wsNames.pop_back(); + + } + Mantid::API::AnalysisDataService::Instance().notificationCenter.addObserver(m_deleteObserver); }