summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/dive.c23
1 files changed, 13 insertions, 10 deletions
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)