diff --git a/modules/io/src/mol/pdb_reader.cc b/modules/io/src/mol/pdb_reader.cc index ec0dbaccb37e140bd8227659455beee97f516ad3..fa0357bedd93f340e62e393803b5c19af8ff2a78 100644 --- a/modules/io/src/mol/pdb_reader.cc +++ b/modules/io/src/mol/pdb_reader.cc @@ -105,14 +105,15 @@ bool PDBReader::HasNext() // a HELIX/SHEET entry implies a next model. while (std::getline(in_, curr_line_) && ++line_num_) { StringRef curr_line(curr_line_.c_str(), curr_line_.length()); - if (IEquals(curr_line.substr(0, 6), StringRef("ATOM ", 6)) || + if (curr_line.size()>5 && + (IEquals(curr_line.substr(0, 6), StringRef("ATOM ", 6)) || (!(flags_ & PDB::NO_HETATMS) && IEquals(curr_line.substr(0, 6),StringRef("HETATM ", 6))) || IEquals(curr_line.substr(0, 6),StringRef("ANISOU ", 6)) || IEquals(curr_line.substr(0, 6), StringRef("SHEET ", 6)) || - IEquals(curr_line.substr(0, 6), StringRef("HELIX ", 6))) { + IEquals(curr_line.substr(0, 6), StringRef("HELIX ", 6)))) { return true; - } else if (IEquals(curr_line.substr(0, 3), StringRef("END", 3))) { + } else if (IEquals(curr_line.rtrim(), StringRef("END", 3))) { hard_end_=true; return false; } @@ -153,7 +154,7 @@ void PDBReader::Import(mol::EntityHandle& ent, if (curr_line.size()<3) { continue; } - if (IEquals(curr_line.substr(0, 3), StringRef("END", 3))) { + if (IEquals(curr_line.rtrim(), StringRef("END", 3))) { hard_end_=true; go_on=false; break; diff --git a/modules/io/src/mol/pdb_writer.cc b/modules/io/src/mol/pdb_writer.cc index 9251f42b227ae6d8667724689f0b3a68d8dc81bd..8e461a56e95da8aa00b28ed6ef44b1be660b3745 100644 --- a/modules/io/src/mol/pdb_writer.cc +++ b/modules/io/src/mol/pdb_writer.cc @@ -207,7 +207,7 @@ void PDBWriter::Write(const mol::AtomHandleList& atoms) PDBWriter::~PDBWriter() { - outstream_ << "END"; + outstream_ << "END "; } }}