From 3d835b8a857902eba39b3eb50c7891257b342ec7 Mon Sep 17 00:00:00 2001 From: Augustin Zidek Date: Thu, 26 Sep 2024 09:38:39 +0100 Subject: [PATCH] Don't try to validate in annotateDSSP when the validator is not set (nullptr) Fixes a segfault if one passes in a Cif datablock that didn't have `cif::pdb::reconstruct_pdbx(cif_file);` called on it. --- libdssp/src/dssp-io.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/libdssp/src/dssp-io.cpp b/libdssp/src/dssp-io.cpp index b7bd982..540321d 100644 --- a/libdssp/src/dssp-io.cpp +++ b/libdssp/src/dssp-io.cpp @@ -747,12 +747,14 @@ void annotateDSSP(cif::datablock &db, const dssp &dssp, bool writeOther, bool wr { using namespace std::literals; - auto &validator = const_cast(*db.get_validator()); - if (validator.get_validator_for_category("dssp_struct_summary") == nullptr) - { - auto dssp_extension = cif::load_resource("dssp-extension.dic"); - if (dssp_extension) - cif::extend_dictionary(validator, *dssp_extension); + if (db.get_validator() != nullptr) { + auto &validator = const_cast(*db.get_validator()); + if (validator.get_validator_for_category("dssp_struct_summary") == nullptr) + { + auto dssp_extension = cif::load_resource("dssp-extension.dic"); + if (dssp_extension) + cif::extend_dictionary(validator, *dssp_extension); + } } if (dssp.empty())