diff options
author | 2016-04-11 11:39:59 -0700 | |
---|---|---|
committer | 2016-04-11 12:23:49 -0700 | |
commit | b3b43e0140806790798b23dba7013828dca97a48 (patch) | |
tree | 2ec06b2ecd10fdabe78257abc858ee970f130741 | |
parent | 7e15c2a7ad89430e023d9bae9250d7a42f8ab4e9 (diff) | |
download | subsurface-b3b43e0140806790798b23dba7013828dca97a48.tar.gz |
Fix dive computer copying
When copying a dive, we need to copy all the dive computers, but the first
one is special since it is embedded inside the "struct dive".
We had special case code for that case, but it only copied the samples and
events.
Use the proper "copy_dc()" for the primary dive computer copying too,
which gets all the details right.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | dive.c | 7 |
1 files changed, 3 insertions, 4 deletions
@@ -474,11 +474,10 @@ void copy_dive(struct dive *s, struct dive *d) d->weightsystem[i].description = copy_string(s->weightsystem[i].description); STRUCTURED_LIST_COPY(struct picture, s->picture_list, d->picture_list, copy_pl); STRUCTURED_LIST_COPY(struct tag_entry, s->tag_list, d->tag_list, copy_tl); + + /* Copy the embedded dc first, then copy the list */ + copy_dc(&s->dc, &d->dc); STRUCTURED_LIST_COPY(struct divecomputer, s->dc.next, d->dc.next, copy_dc); - /* this only copied dive computers 2 and up. The first dive computer is part - * of the struct dive, so let's make copies of its samples and events */ - copy_samples(&s->dc, &d->dc); - copy_events(&s->dc, &d->dc); } /* make a clone of the source dive and clean out the source dive; |