diff --git a/modules/seq/base/src/impl/sequence_impl.cc b/modules/seq/base/src/impl/sequence_impl.cc index 69fd3f42f4d3cd3b377f2991e282ff27d86ba116..d57989d9544441cf4c2d20e77dcb879d22dc2419 100644 --- a/modules/seq/base/src/impl/sequence_impl.cc +++ b/modules/seq/base/src/impl/sequence_impl.cc @@ -63,8 +63,13 @@ SequenceImplPtr SequenceImpl::FromString(const String& seq_name, void SequenceImpl::SetString(const String& seq) { - seq_string_=seq; - this->ShiftsFromSequence(); + if (SequenceImpl::IsSequenceStringSane(seq)) { + seq_string_=seq; + this->ShiftsFromSequence(); + } + else { + throw InvalidSequence(); + } } SequenceImpl::SequenceImpl(const String& seq_name, @@ -207,7 +212,7 @@ void SequenceImpl::AttachView(const mol::EntityView& view) { static const char* msg="Expected 1 chain, but %d chains found"; attached_view_=view; - if (attached_view_.GetChainCount()!=1) { + if (view.IsValid() && attached_view_.GetChainCount()!=1) { throw IntegrityError(str(format(msg) % attached_view_.GetChainCount())); } }