diff --git a/modules/io/src/mol/dcd_io.cc b/modules/io/src/mol/dcd_io.cc index f21b67afc6019bba35f68142d9fd2da8d1fc5802..e81d3135144fd4c9aef7439b0f482726a72c8cd1 100644 --- a/modules/io/src/mol/dcd_io.cc +++ b/modules/io/src/mol/dcd_io.cc @@ -279,7 +279,7 @@ mol::CoordGroupHandle load_dcd(const mol::AtomHandleList& alist, // this atom li geom::Vec3 cell_size, cell_angles; size_t frame_size=calc_frame_size(ucell_flag, gap_flag, xlist.size()); int i=0; - for(;i<header.num;i+=stride) { + while(true){ if (!read_frame(istream, header, frame_size, ucell_flag, gap_flag, swap_flag, xlist, clist, i,cell_size,cell_angles)) { break; @@ -292,11 +292,12 @@ mol::CoordGroupHandle load_dcd(const mol::AtomHandleList& alist, // this atom li // skip frames (defined by stride) if(stride>1) istream.seekg(frame_size*(stride-1),std::ios_base::cur); - } - istream.get(); - if(!istream.eof()) { - LOG_VERBOSE("LoadCHARMMTraj: unexpected trailing file data, bytes read: " - << istream.tellg()); + i+=stride; + istream.get(); + if(istream.eof()){ + break; + } + istream.unget(); } LOG_VERBOSE("Loaded " << cg.GetFrameCount() << " frames with "