diff --git a/modules/mol/base/src/atom_base.cc b/modules/mol/base/src/atom_base.cc index b1547fb518b730f72cfc9d29cd2ab78b833c42aa..482464768a96dbfd1f3195427e7e8cfafa6149cc 100644 --- a/modules/mol/base/src/atom_base.cc +++ b/modules/mol/base/src/atom_base.cc @@ -104,7 +104,7 @@ String AtomBase::GetQualifiedName() const void AtomBase::CheckValidity() const { - if (!impl_) + if (! (impl_ && impl_->GetEntity())) throw InvalidHandle(); } diff --git a/modules/mol/base/src/chain_base.cc b/modules/mol/base/src/chain_base.cc index 2b693b7fc031d07bf3da2492a1644db649557b30..28263e7387f55bb96dbb95489a512b92d494db27 100644 --- a/modules/mol/base/src/chain_base.cc +++ b/modules/mol/base/src/chain_base.cc @@ -53,7 +53,7 @@ String ChainBase::GetDescription() const { } void ChainBase::CheckValidity() const { - if (!impl_) + if (! (impl_ && impl_->GetEntity())) throw InvalidHandle(); } diff --git a/modules/mol/base/src/impl/atom_impl.cc b/modules/mol/base/src/impl/atom_impl.cc index 9c5642eafc12d70f32be6c47f710f539c908dd9a..2e754a73b0b95474f741597dea19865734a25824 100644 --- a/modules/mol/base/src/impl/atom_impl.cc +++ b/modules/mol/base/src/impl/atom_impl.cc @@ -73,6 +73,9 @@ void AtomImpl::Apply(EntityVisitor& v) ResidueImplPtr AtomImpl::GetResidue() const { + if (!res_.lock()) { + throw InvalidHandle(); + } return res_.lock(); } @@ -214,6 +217,9 @@ AtomImpl::~AtomImpl() { EntityImplPtr AtomImpl::GetEntity() const { + if (!res_.lock()) { + throw InvalidHandle(); + } return res_.lock()->GetEntity(); } diff --git a/modules/mol/base/src/impl/chain_impl.cc b/modules/mol/base/src/impl/chain_impl.cc index adf5aeb8b88ea887c6af3252ca0fdea423eab516..6aff6305b4e0ea98d5508e576fa2ba46b157ef0c 100644 --- a/modules/mol/base/src/impl/chain_impl.cc +++ b/modules/mol/base/src/impl/chain_impl.cc @@ -369,6 +369,9 @@ AtomImplPtr ChainImpl::FindAtom(const ResNum& num, EntityImplPtr ChainImpl::GetEntity() const { + if (!ent_.lock()) { + throw InvalidHandle(); + } return ent_.lock(); } int ChainImpl::GetIndexForResNum(const ResNum& number) const diff --git a/modules/mol/base/src/impl/residue_impl.cc b/modules/mol/base/src/impl/residue_impl.cc index 819c7294dea5a4ca9bedb5c5c97a652b0a34de8e..316f16de24889aefa363508529439364ff935a63 100644 --- a/modules/mol/base/src/impl/residue_impl.cc +++ b/modules/mol/base/src/impl/residue_impl.cc @@ -200,6 +200,9 @@ void ResidueImpl::SetSecStructure(SecStructure ss) EntityImplPtr ResidueImpl::GetEntity() const { + if (!ent_.lock()) { + throw InvalidHandle(); + } return ent_.lock(); } @@ -256,6 +259,9 @@ int ResidueImpl::GetBondCount() const ChainImplPtr ResidueImpl::GetChain() const { + if (!chain_.lock()) { + throw InvalidHandle(); + } return chain_.lock(); } diff --git a/modules/mol/base/src/residue_base.cc b/modules/mol/base/src/residue_base.cc index b788d7c2ed305e946dadaefd78cdc9c3ca87c4e0..01b996679065cb3ab483db9d6f437c9eba8b85b9 100644 --- a/modules/mol/base/src/residue_base.cc +++ b/modules/mol/base/src/residue_base.cc @@ -158,7 +158,7 @@ const impl::ResidueImplPtr& ResidueBase::Impl() const void ResidueBase::CheckValidity() const { - if (!impl_) + if (! (impl_ && impl_->GetEntity())) throw InvalidHandle(); }