diff --git a/modules/io/src/mol/star_parser.cc b/modules/io/src/mol/star_parser.cc index 45d34907195f6cc825f093061863365c48a0fe6c..049b026a2f7826f9a4c49b4224942314bfc82045 100644 --- a/modules/io/src/mol/star_parser.cc +++ b/modules/io/src/mol/star_parser.cc @@ -171,6 +171,8 @@ void StarParser::ParseLoop() if (StringRef("loop_", 5)==tline) { return; } + case '_': + return; default: if (process_rows) { int before=columns.size(); @@ -270,7 +272,7 @@ void StarParser::ParseData() if (tline.empty()) { this->ConsumeLine(); continue; - } + } switch (tline[0]) { case '_': if (skip) { diff --git a/modules/io/tests/test_star_parser.cc b/modules/io/tests/test_star_parser.cc index 6a19967759c13165e55459216a7018e025a22470..0b31e3dd829ddcdd3298731ecaa6b4b1215b4a2f 100644 --- a/modules/io/tests/test_star_parser.cc +++ b/modules/io/tests/test_star_parser.cc @@ -134,9 +134,10 @@ BOOST_AUTO_TEST_CASE(star_split3) BOOST_REQUIRE(parts.size()==1); BOOST_CHECK_EQUAL(parts[0], StringRef("1 2", 3)); } - + BOOST_AUTO_TEST_CASE(star_data_item) { + BOOST_MESSAGE(" Running star_data_item tests..."); std::ifstream s("testfiles/data-item.cif"); DataItemTestParser star_p(s); star_p.Parse(); diff --git a/modules/io/tests/testfiles/data-item.cif b/modules/io/tests/testfiles/data-item.cif index 11933c37f98cdaf1d1dcad894d7769707f33ce35..2753f4d0d1089dd25584167f2cab1bae7e541640 100644 --- a/modules/io/tests/testfiles/data-item.cif +++ b/modules/io/tests/testfiles/data-item.cif @@ -1,4 +1,11 @@ data_data-item +# this file covers BZDNG-282 +loop_ +_loop.s1 +_loop.s2 +_loop.s3 +_loop.s4 +1 2 3 4 _data-item.s1 a _data-item.s2 'a b c'