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;
|
int expand = 0;
|
||||||
char **earg;
|
char **earg;
|
||||||
int *amap;
|
int *amap = nullptr;
|
||||||
nvalues = utils::expand_args(FLERR,nvalues,&arg[6],mode,earg,lmp,&amap);
|
nvalues = utils::expand_args(FLERR,nvalues,&arg[6],mode,earg,lmp,&amap);
|
||||||
key2col.clear();
|
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]);
|
error->all(FLERR, amap[i]+6,"Invalid fix ave/time argument: {}", arg[i]);
|
||||||
|
|
||||||
val.argindex = argi.get_index1();
|
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.varlen = 0;
|
||||||
val.offcol = 0;
|
val.offcol = 0;
|
||||||
val.id = argi.get_name();
|
val.id = argi.get_name();
|
||||||
@ -278,6 +279,7 @@ FixAveTime::FixAveTime(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
if (expand) {
|
if (expand) {
|
||||||
for (int i = 0; i < nvalues; i++) delete[] earg[i];
|
for (int i = 0; i < nvalues; i++) delete[] earg[i];
|
||||||
memory->sfree(earg);
|
memory->sfree(earg);
|
||||||
|
memory->sfree(amap);
|
||||||
}
|
}
|
||||||
|
|
||||||
// allocate memory for averaging
|
// 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;
|
return narg;
|
||||||
}
|
}
|
||||||
|
|
||||||
// determine argument offset
|
// determine argument offset, if possible
|
||||||
int ioffset = 0;
|
int ioffset = 0;
|
||||||
|
if (lmp->input->arg) {
|
||||||
for (int i = 0; i < lmp->input->narg; ++i)
|
for (int i = 0; i < lmp->input->narg; ++i)
|
||||||
if (lmp->input->arg[i] == arg[0]) ioffset = i;
|
if (lmp->input->arg[i] == arg[0]) ioffset = i;
|
||||||
|
}
|
||||||
|
|
||||||
// maxarg should always end up equal to newarg, so caller can free earg
|
// 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) {
|
if (expandflag) {
|
||||||
|
|
||||||
// expand wild card string to nlo/nhi numbers
|
// expand wild card string to nlo/nhi numbers
|
||||||
|
|
||||||
utils::bounds(file, line, wc, 1, nmax, nlo, nhi, lmp->error, iarg + ioffset);
|
utils::bounds(file, line, wc, 1, nmax, nlo, nhi, lmp->error, iarg + ioffset);
|
||||||
|
|
||||||
if (newarg + nhi - nlo + 1 > maxarg) {
|
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);
|
// 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;
|
return newarg;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -151,6 +151,10 @@ TEST_F(Advanced_utils, expand_args)
|
|||||||
args[7] = utils::strdup("c_gofr[*2][2]");
|
args[7] = utils::strdup("c_gofr[*2][2]");
|
||||||
args[8] = utils::strdup("c_gofr[*][*]");
|
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);
|
auto narg = utils::expand_args(FLERR, oarg, args, 0, earg, lmp);
|
||||||
EXPECT_EQ(narg, 16);
|
EXPECT_EQ(narg, 16);
|
||||||
EXPECT_STREQ(earg[0], "v_step");
|
EXPECT_STREQ(earg[0], "v_step");
|
||||||
|
|||||||
Reference in New Issue
Block a user