resolve unit test failures due to enhanced error handling
This commit is contained in:
@ -79,7 +79,7 @@ FixAveTime::FixAveTime(LAMMPS *lmp, int narg, char **arg) :
|
||||
|
||||
int expand = 0;
|
||||
char **earg;
|
||||
int *amap;
|
||||
int *amap = nullptr;
|
||||
nvalues = utils::expand_args(FLERR,nvalues,&arg[6],mode,earg,lmp,&amap);
|
||||
key2col.clear();
|
||||
|
||||
@ -101,7 +101,8 @@ FixAveTime::FixAveTime(LAMMPS *lmp, int narg, char **arg) :
|
||||
error->all(FLERR, amap[i]+6,"Invalid fix ave/time argument: {}", arg[i]);
|
||||
|
||||
val.argindex = argi.get_index1();
|
||||
val.iarg = amap[i] + 6;
|
||||
if (expand) val.iarg = amap[i] + 6;
|
||||
else val.iarg = i + 6;
|
||||
val.varlen = 0;
|
||||
val.offcol = 0;
|
||||
val.id = argi.get_name();
|
||||
@ -278,6 +279,7 @@ FixAveTime::FixAveTime(LAMMPS *lmp, int narg, char **arg) :
|
||||
if (expand) {
|
||||
for (int i = 0; i < nvalues; i++) delete[] earg[i];
|
||||
memory->sfree(earg);
|
||||
memory->sfree(amap);
|
||||
}
|
||||
|
||||
// allocate memory for averaging
|
||||
|
||||
@ -860,10 +860,12 @@ int utils::expand_args(const char *file, int line, int narg, char **arg, int mod
|
||||
return narg;
|
||||
}
|
||||
|
||||
// determine argument offset
|
||||
// determine argument offset, if possible
|
||||
int ioffset = 0;
|
||||
for (int i = 0; i < lmp->input->narg; ++i)
|
||||
if (lmp->input->arg[i] == arg[0]) ioffset = i;
|
||||
if (lmp->input->arg) {
|
||||
for (int i = 0; i < lmp->input->narg; ++i)
|
||||
if (lmp->input->arg[i] == arg[0]) ioffset = i;
|
||||
}
|
||||
|
||||
// maxarg should always end up equal to newarg, so caller can free earg
|
||||
|
||||
@ -1052,7 +1054,6 @@ int utils::expand_args(const char *file, int line, int narg, char **arg, int mod
|
||||
if (expandflag) {
|
||||
|
||||
// expand wild card string to nlo/nhi numbers
|
||||
|
||||
utils::bounds(file, line, wc, 1, nmax, nlo, nhi, lmp->error, iarg + ioffset);
|
||||
|
||||
if (newarg + nhi - nlo + 1 > maxarg) {
|
||||
@ -1086,7 +1087,11 @@ int utils::expand_args(const char *file, int line, int narg, char **arg, int mod
|
||||
}
|
||||
}
|
||||
|
||||
if (argmap && *argmap) *argmap = amap;
|
||||
if (argmap)
|
||||
*argmap = amap;
|
||||
else
|
||||
lmp->memory->sfree(amap);
|
||||
|
||||
// fprintf(stderr, "NEWARG %d\n",newarg); for (int i = 0; i < newarg; i++) printf(" arg %d: %s %d\n",i,earg[i], amap ? amap[i] : -1);
|
||||
return newarg;
|
||||
}
|
||||
|
||||
@ -151,6 +151,10 @@ TEST_F(Advanced_utils, expand_args)
|
||||
args[7] = utils::strdup("c_gofr[*2][2]");
|
||||
args[8] = utils::strdup("c_gofr[*][*]");
|
||||
|
||||
// disable use of input->command and input->arg which point to the last run command right now
|
||||
lmp->input->command = nullptr;
|
||||
lmp->input->arg = nullptr;
|
||||
|
||||
auto narg = utils::expand_args(FLERR, oarg, args, 0, earg, lmp);
|
||||
EXPECT_EQ(narg, 16);
|
||||
EXPECT_STREQ(earg[0], "v_step");
|
||||
|
||||
Reference in New Issue
Block a user