diff --git a/src/fix_property_atom.cpp b/src/fix_property_atom.cpp index 24704a12ad..95e25c59b2 100644 --- a/src/fix_property_atom.cpp +++ b/src/fix_property_atom.cpp @@ -325,12 +325,12 @@ void FixPropertyAtom::read_data_section(char *keyword, int n, char *buf, tagint } /* ---------------------------------------------------------------------- - return # of lines in section of data file labeled by keyword + return # of lines in section of data file labeled by keyword. -1 signals use # of added atoms ------------------------------------------------------------------------- */ bigint FixPropertyAtom::read_data_skip_lines(char * /*keyword*/) { - return atom->natoms; + return -1; } /* ---------------------------------------------------------------------- diff --git a/src/read_data.cpp b/src/read_data.cpp index ee6399a2d3..5317a4217a 100644 --- a/src/read_data.cpp +++ b/src/read_data.cpp @@ -875,10 +875,13 @@ void ReadData::command(int narg, char **arg) int i; for (i = 0; i < nfix; i++) if (strcmp(keyword, fix_section[i]) == 0) { - if (firstpass) + if (firstpass) { fix(fix_index[i], keyword); - else - skip_lines(fix_index[i]->read_data_skip_lines(keyword)); + } else { + auto nskip = fix_index[i]->read_data_skip_lines(keyword); + if (nskip < 0) nskip = natoms; + skip_lines(nskip); + } break; } if (i == nfix) @@ -2225,6 +2228,7 @@ void ReadData::fix(Fix *ifix, char *keyword) int nchunk, eof; bigint nline = ifix->read_data_skip_lines(keyword); + if (nline < 0) nline = natoms; bigint nread = 0; while (nread < nline) {