diff --git a/modules/mol/base/src/atom_view.cc b/modules/mol/base/src/atom_view.cc index 5811a2d5567ea3db1de2ebe8eede8fb4c9a7c631..20c14afbe42d93971aa84478f04db9c2199e065c 100644 --- a/modules/mol/base/src/atom_view.cc +++ b/modules/mol/base/src/atom_view.cc @@ -67,7 +67,10 @@ AtomView::AtomView(const ResidueView& residue_view, ResidueView AtomView::GetResidue() const { this->CheckValidity(); - return ResidueView(data_->residue.lock(), Impl()->GetResidue()); + if (!data_->residue.expired()) { + return ResidueView(data_->residue.lock(), Impl()->GetResidue()); + } + throw InvalidHandle(); } void AtomView::Apply(EntityVisitor& visitor) diff --git a/modules/mol/base/src/chain_view.cc b/modules/mol/base/src/chain_view.cc index 0e6458c388f6c9ee1cdde4c49eada4781330e3cd..e5d7e05499460fa1d76468f313774a67e353d438 100644 --- a/modules/mol/base/src/chain_view.cc +++ b/modules/mol/base/src/chain_view.cc @@ -79,7 +79,11 @@ ChainView::ChainView() { } EntityView ChainView::GetEntity() const { - return EntityView(data_->entity.lock(), Impl()->GetEntity()); + this->CheckValidity(); + if (!data_->entity.expired()) { + return EntityView(data_->entity.lock(), Impl()->GetEntity()); + } + throw InvalidHandle(); } ChainView::ChainView(const EntityView& entity, diff --git a/modules/mol/base/src/residue_view.cc b/modules/mol/base/src/residue_view.cc index 8f76c5766d1f215bc2a3ee46b5e892a7347ee038..2fef9c9432c1f172b997df6f92c56f24b21e3f4a 100644 --- a/modules/mol/base/src/residue_view.cc +++ b/modules/mol/base/src/residue_view.cc @@ -138,7 +138,10 @@ const AtomViewList& ResidueView::GetAtomList() const { ChainView ResidueView::GetChain() const { this->CheckValidity(); - return ChainView(data_->chain.lock(), Impl()->GetChain()); + if (!data_->chain.expired()) { + return ChainView(data_->chain.lock(), Impl()->GetChain()); + } + throw InvalidHandle(); }