From 860807bf922f6fa08260def906df4d864353c90f Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Sat, 27 Jul 2019 09:00:37 +0200 Subject: Core: create copy_cylinder_type() function Move the loop body of copy_cylinder_types() into its own function. When using variable sized arrays, this loop will have to treat two cases (overwrite cylinder and add new cylinder), so that makes things more clear. Signed-off-by: Berthold Stoeger --- core/dive.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'core') diff --git a/core/dive.c b/core/dive.c index 1a1b598ea..241125f61 100644 --- a/core/dive.c +++ b/core/dive.c @@ -517,6 +517,17 @@ int nr_weightsystems(const struct dive *dive) return dive->weightsystems.nr; } +static void copy_cylinder_type(const cylinder_t *s, cylinder_t *d) +{ + free(d->type.description); + d->type = s->type; + d->type.description = s->type.description ? strdup(s->type.description) : NULL; + d->gasmix = s->gasmix; + d->depth = s->depth; + d->cylinder_use = s->cylinder_use; + d->manually_added = true; +} + /* copy the equipment data part of the cylinders but keep pressures */ static void copy_cylinder_types(const struct dive *s, struct dive *d) { @@ -524,16 +535,8 @@ static void copy_cylinder_types(const struct dive *s, struct dive *d) if (!s || !d) return; - for (i = 0; i < MAX_CYLINDERS; i++) { - free((void *)d->cylinder[i].type.description); - d->cylinder[i].type = s->cylinder[i].type; - d->cylinder[i].type.description = s->cylinder[i].type.description ? - strdup(s->cylinder[i].type.description) : NULL; - d->cylinder[i].gasmix = s->cylinder[i].gasmix; - d->cylinder[i].depth = s->cylinder[i].depth; - d->cylinder[i].cylinder_use = s->cylinder[i].cylinder_use; - d->cylinder[i].manually_added = true; - } + for (i = 0; i < MAX_CYLINDERS; i++) + copy_cylinder_type(s->cylinder + i, d->cylinder + i); } void copy_cylinders(const struct dive *s, struct dive *d, bool used_only) -- cgit v1.2.3-70-g09d2