diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2018-10-13 11:52:59 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2018-10-13 21:41:41 -0400 |
commit | 8815f77ea086ba474df051144098b80739a0f3ae (patch) | |
tree | cd4546081961c4734ca850d72ce8c2f62ac91dc9 /core/divesite.c | |
parent | 5d3967ce846ed4876abeb43ebe2d919064050ed6 (diff) | |
download | subsurface-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.c | 22 |
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(©->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, ©->taxonomy); } static void merge_string(char **a, char **b) |