summaryrefslogtreecommitdiffstats
path: root/core/divesite.c
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2018-10-13 11:52:59 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2018-10-13 21:41:41 -0400
commit8815f77ea086ba474df051144098b80739a0f3ae (patch)
treecd4546081961c4734ca850d72ce8c2f62ac91dc9 /core/divesite.c
parent5d3967ce846ed4876abeb43ebe2d919064050ed6 (diff)
downloadsubsurface-8815f77ea086ba474df051144098b80739a0f3ae.tar.gz
Dive site: use own copy of taxonomy in dive-site-edit widget
The dive-site-edit widget uses a copy of the to-be-edited site to compare with old values. Generally, this seems overkill (the original dive-site can be used for such a comparison). But one place where it can't simply be removed is the taxonomy, because the widget needs a place to store the unsaved data. Change the code to use an explicit taxonomy structure instead of the one provided in the copy. This should ultimately allow removal of the latter. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core/divesite.c')
-rw-r--r--core/divesite.c22
1 files changed, 1 insertions, 21 deletions
diff --git a/core/divesite.c b/core/divesite.c
index e84ec1dcc..f634044c2 100644
--- a/core/divesite.c
+++ b/core/divesite.c
@@ -249,26 +249,6 @@ bool dive_site_is_empty(struct dive_site *ds)
ds->longitude.udeg == 0);
}
-void copy_dive_site_taxonomy(struct dive_site *orig, struct dive_site *copy)
-{
- if (orig->taxonomy.category == NULL) {
- free_taxonomy(&copy->taxonomy);
- } else {
- if (copy->taxonomy.category == NULL)
- copy->taxonomy.category = alloc_taxonomy();
- for (int i = 0; i < TC_NR_CATEGORIES; i++) {
- if (i < copy->taxonomy.nr) {
- free((void *)copy->taxonomy.category[i].value);
- copy->taxonomy.category[i].value = NULL;
- }
- if (i < orig->taxonomy.nr) {
- copy->taxonomy.category[i] = orig->taxonomy.category[i];
- copy->taxonomy.category[i].value = copy_string(orig->taxonomy.category[i].value);
- }
- }
- copy->taxonomy.nr = orig->taxonomy.nr;
- }
-}
void copy_dive_site(struct dive_site *orig, struct dive_site *copy)
{
free(copy->name);
@@ -281,7 +261,7 @@ void copy_dive_site(struct dive_site *orig, struct dive_site *copy)
copy->notes = copy_string(orig->notes);
copy->description = copy_string(orig->description);
copy->uuid = orig->uuid;
- copy_dive_site_taxonomy(orig, copy);
+ copy_taxonomy(&orig->taxonomy, &copy->taxonomy);
}
static void merge_string(char **a, char **b)