diff --git a/modules/mol/base/src/impl/atom_impl.cc b/modules/mol/base/src/impl/atom_impl.cc index 3339ead628335fd62bfa23600a9a4a03dffacfcf..bf66239bb46741d3de82d4dbd2a1384717f59a46 100644 --- a/modules/mol/base/src/impl/atom_impl.cc +++ b/modules/mol/base/src/impl/atom_impl.cc @@ -356,20 +356,21 @@ String AtomImpl::GetStringProperty(Prop::ID prop_id) const void AtomImpl::DeleteAllTorsions() { EntityImplPtr e=this->GetEntity(); TorsionImplMap::iterator i; - while (true) { - for (i=e->GetTorsionMap().begin(); i!=e->GetTorsionMap().end(); ++i) { - if (i->second->IsAtomInvolved(shared_from_this())) { - e->GetTorsionMap().erase(i); - continue; - } - } - break; + std::vector<TorsionImplMap::iterator> t_rm_vec; + for (i=e->GetTorsionMap().begin(); i!=e->GetTorsionMap().end(); ++i) { + if (i->second->IsAtomInvolved(shared_from_this())) { + t_rm_vec.push_back(i); + } + } + std::vector<TorsionImplMap::iterator>::iterator it_rm; + for (it_rm=t_rm_vec.begin(); it_rm!=t_rm_vec.end(); ++it_rm) { + e->GetTorsionMap().erase(*it_rm); } TorsionImplList& l=this->GetResidue()->GetTorsionList(); TorsionImplList::iterator j; j=std::remove_if(l.begin(), l.end(), bind(&TorsionImpl::IsAtomInvolved, _1, shared_from_this())); - l.erase(j, l.end()); + l.erase(j, l.end()); } }}} // ns diff --git a/modules/mol/base/tests/test_delete.cc b/modules/mol/base/tests/test_delete.cc index 4a361afc9b0a4cd59453a7c0368c4bab8349fc12..ccbce7045a54980a158f07ffe5afb3babc631671 100644 --- a/modules/mol/base/tests/test_delete.cc +++ b/modules/mol/base/tests/test_delete.cc @@ -77,4 +77,4 @@ BOOST_AUTO_TEST_CASE(atom_delete) BOOST_CHECK_NO_THROW(f.e.Apply(ev)); } -BOOST_AUTO_TEST_SUITE_END() \ No newline at end of file +BOOST_AUTO_TEST_SUITE_END() diff --git a/modules/mol/base/tests/test_view.cc b/modules/mol/base/tests/test_view.cc index ebfdf10bb729a732357cc12212d19ff36a0d389b..cfe3a395c5cbaae2e2390c95609874afcdf55233 100644 --- a/modules/mol/base/tests/test_view.cc +++ b/modules/mol/base/tests/test_view.cc @@ -27,8 +27,8 @@ using namespace ost; using namespace ost::mol; -struct Fixture { - Fixture() { +struct FixtureView { + FixtureView() { e=CreateEntity(); XCSEditor editor=e.EditXCS(); c=editor.InsertChain("A"); @@ -54,7 +54,7 @@ BOOST_AUTO_TEST_SUITE( mol_base ) BOOST_AUTO_TEST_CASE(gen_full_view) { - Fixture f; + FixtureView f; EntityView ev = f.e.CreateFullView(); BOOST_CHECK_EQUAL(ev.GetChainCount(),f.e.GetChainCount());