Make sure we don't create multiple dive sites with the same uuid

This shouldn't happen, but in case there is a logic error higher up in the
code somewhere, this will prevent it from happening, period.

If the code asks for a new dive site with a specific uuid, simply return
the existing dive site with that uuid.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2015-09-29 12:58:16 -04:00
parent 7ad1485c39
commit edac07554c
5 changed files with 28 additions and 14 deletions

View file

@ -1562,7 +1562,11 @@ static void dive_site_end(void)
if (!cur_dive_site)
return;
if (cur_dive_site->uuid) {
struct dive_site *ds = alloc_dive_site(0);
// we intentionally call this with '0' to ensure we get
// a new structure and then copy things into that new
// structure a few lines below (which sets the correct
// uuid)
struct dive_site *ds = alloc_or_get_dive_site(0);
if (cur_dive_site->taxonomy.nr == 0) {
free(cur_dive_site->taxonomy.category);
cur_dive_site->taxonomy.category = NULL;