diff --git a/modules/io/src/mol/mmcif_reader.cc b/modules/io/src/mol/mmcif_reader.cc index a4c9ca313f3dcdeb5f1434884cb57c00d72ab9df..b6d90fc756685626909edc2e6d6209ce07a557fd 100644 --- a/modules/io/src/mol/mmcif_reader.cc +++ b/modules/io/src/mol/mmcif_reader.cc @@ -805,7 +805,7 @@ void MMCifReader::ParseCitation(const std::vector<StringRef>& columns) } } if (indices_[YEAR] != -1) { - if (columns[indices_[YEAR]][0]!='?') { + if (!is_undef(columns[indices_[YEAR]])) { cit.SetYear(this->TryGetInt(columns[indices_[YEAR]], "citation.year")); } } diff --git a/modules/io/tests/test_mmcif_reader.cc b/modules/io/tests/test_mmcif_reader.cc index 6f6866622c49c5a6e2f0259339e3c6b5508f4024..3a1906df9ea7c8f7ffc0dae6f79fcc9a54b7972e 100644 --- a/modules/io/tests/test_mmcif_reader.cc +++ b/modules/io/tests/test_mmcif_reader.cc @@ -584,16 +584,20 @@ BOOST_AUTO_TEST_CASE(mmcif_citation_tests) tmmcif_h.SetCategory(StringRef("citation", 8)); tmmcif_h.Add(StringRef("id", 2)); + tmmcif_h.Add(StringRef("year", 4)); tmmcif_h.Add(StringRef("book_title", 10)); tmmcif_h.Add(StringRef("journal_abbrev", 14)); tmmcif_p.OnBeginLoop(tmmcif_h); columns.push_back(StringRef("Foo", 3)); + columns.push_back(StringRef("1979", 4)); columns.push_back(StringRef("The Guide", 9)); columns.push_back(StringRef(".", 1)); BOOST_CHECK_NO_THROW(tmmcif_p.ParseCitation(columns)); + BOOST_CHECK(tmmcif_p.GetInfo().GetCitations().back().GetYear() == 1979); + columns.pop_back(); columns.pop_back(); columns.push_back(StringRef(".", 1));