resolve unit test failures due to enhanced error handling

This commit is contained in:
Axel Kohlmeyer
2025-01-18 21:40:48 -05:00
parent 9cca8ab179
commit d99c960eb9
3 changed files with 18 additions and 7 deletions

View File

@ -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

View File

@ -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;
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;
}

View File

@ -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");