diff --git a/src/partition.c b/src/partition.c index bbd7454dd63be6ab5192558fb4a2e3399ea03cfc..60ee7716efb25188b3a09f44f93a65a3ccbd5893 100644 --- a/src/partition.c +++ b/src/partition.c @@ -330,22 +330,28 @@ static void accumulate_sizes(struct space *s, double *counts) { mapper_data.s = s; double hsize = (double)sizeof(struct part); - mapper_data.size = hsize; - threadpool_map(&s->e->threadpool, accumulate_sizes_mapper_part, s->parts, - s->nr_parts, sizeof(struct part), space_splitsize, - &mapper_data); + if (s->nr_parts > 0) { + mapper_data.size = hsize; + threadpool_map(&s->e->threadpool, accumulate_sizes_mapper_part, s->parts, + s->nr_parts, sizeof(struct part), space_splitsize, + &mapper_data); + } double gsize = (double)sizeof(struct gpart); - mapper_data.size = gsize; - threadpool_map(&s->e->threadpool, accumulate_sizes_mapper_gpart, s->gparts, - s->nr_gparts, sizeof(struct gpart), space_splitsize, - &mapper_data); + if (s->nr_gparts > 0) { + mapper_data.size = gsize; + threadpool_map(&s->e->threadpool, accumulate_sizes_mapper_gpart, s->gparts, + s->nr_gparts, sizeof(struct gpart), space_splitsize, + &mapper_data); + } double ssize = (double)sizeof(struct spart); - mapper_data.size = ssize; - threadpool_map(&s->e->threadpool, accumulate_sizes_mapper_spart, s->sparts, - s->nr_sparts, sizeof(struct spart), space_splitsize, - &mapper_data); + if (s->nr_sparts > 0) { + mapper_data.size = ssize; + threadpool_map(&s->e->threadpool, accumulate_sizes_mapper_spart, s->sparts, + s->nr_sparts, sizeof(struct spart), space_splitsize, + &mapper_data); + } /* Keep the sum of particles across all ranks in the range of IDX_MAX. */ if ((s->e->total_nr_parts * hsize + s->e->total_nr_gparts * gsize +