Commit 6f1bbd3c authored by Axel Kohlmeyer's avatar Axel Kohlmeyer
Browse files

protect fix ave/histo from segfaulting on non-existing computes, fixes or variables

parent ae56b9ad
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -205,14 +205,18 @@ FixAveHisto::FixAveHisto(LAMMPS *lmp, int narg, char **arg) :
  for (int i = 0; i < nvalues; i++) {
    if (which[i] == X || which[i] == V || which[i] == F) kindflag = PERATOM;
    else if (which[i] == COMPUTE) {
      Compute *compute = modify->compute[modify->find_compute(ids[i])];
      int c_id = modify->find_compute(ids[i]);
      if (c_id < 0) error->all(FLERR,"Fix ave/histo input is invalid compute");
      Compute *compute = modify->compute[c_id];
      if (compute->scalar_flag || compute->vector_flag || compute->array_flag)
        kindflag = GLOBAL;
      else if (compute->peratom_flag) kindflag = PERATOM;
      else if (compute->local_flag) kindflag = LOCAL;
      else error->all(FLERR,"Fix ave/histo input is invalid compute");
    } else if (which[i] == FIX) {
      Fix *fix = modify->fix[modify->find_fix(ids[i])];
      int f_id = modify->find_fix(ids[i]);
      if (f_id < 0) error->all(FLERR,"Fix ave/histo input is invalid fix");
      Fix *fix = modify->fix[f_id];
      if (fix->scalar_flag || fix->vector_flag || fix->array_flag)
        kindflag = GLOBAL;
      else if (fix->peratom_flag) kindflag = PERATOM;
@@ -220,6 +224,7 @@ FixAveHisto::FixAveHisto(LAMMPS *lmp, int narg, char **arg) :
      else error->all(FLERR,"Fix ave/histo input is invalid fix");
    } else if (which[i] == VARIABLE) {
      int ivariable = input->variable->find(ids[i]);
      if (ivariable < 0) error->all(FLERR,"Fix ave/histo input is invalid variable");
      if (input->variable->equalstyle(ivariable)) kindflag = GLOBAL;
      else if (input->variable->atomstyle(ivariable)) kindflag = PERATOM;
      else error->all(FLERR,"Fix ave/histo input is invalid variable");