correctly check for 32bit integer overflow

This commit is contained in:
Axel Kohlmeyer
2025-05-15 08:15:35 -04:00
parent 19cfd08eb8
commit c3c0180649

View File

@ -58,8 +58,8 @@ ComputePODDAtom::ComputePODDAtom(LAMMPS *lmp, int narg, char **arg) :
pod = nullptr;
elements = nullptr;
if (((((MAXBIGINT*3.0)*atom->natoms)*podptr->nClusters)*podptr->Mdesc) > (MAXSMALLINT*1.0))
error->all(FLERR, "Per-atom data too large");
if ((((3.0*atom->natoms)*podptr->nClusters)*podptr->Mdesc) > (MAXSMALLINT*1.0))
error->all(FLERR, "Too many atoms ({}_ for compute {}", atom->natoms, style);
size_peratom_cols = 3 * atom->natoms * podptr->Mdesc * podptr->nClusters;
peratom_flag = 1;
}
@ -110,8 +110,8 @@ void ComputePODDAtom::compute_peratom()
if (atom->natoms > nmax) {
memory->destroy(pod);
nmax = atom->natoms;
if (((((MAXBIGINT*3.0)*atom->natoms)*podptr->nClusters)*podptr->Mdesc) > (MAXSMALLINT*1.0))
error->all(FLERR, "Per-atom data too large");
if ((((3.0*atom->natoms)*podptr->nClusters)*podptr->Mdesc) > (MAXSMALLINT*1.0))
error->all(FLERR, "Too many atoms ({}) for compute {}", atom->natoms, style);
int numdesc = 3 * atom->natoms * podptr->Mdesc * podptr->nClusters;
memory->create(pod, nmax, numdesc,"podd/atom:pod");
array_atom = pod;