mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Undo: consider dive site in AddDive()
If a dive site was added for a new dive, remove it on undo. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
2134d99d0c
commit
a2be015a43
8 changed files with 49 additions and 16 deletions
|
@ -140,6 +140,19 @@ void add_dive_site_to_table(struct dive_site *ds, struct dive_site_table *ds_tab
|
|||
ds_table->nr = nr + 1;
|
||||
}
|
||||
|
||||
struct dive_site *alloc_dive_site()
|
||||
{
|
||||
struct dive_site *ds;
|
||||
ds = calloc(1, sizeof(*ds));
|
||||
if (!ds)
|
||||
exit(1);
|
||||
ds->uuid = rand() & 0xff;
|
||||
ds->uuid |= (rand() & 0xff) << 8;
|
||||
ds->uuid |= (rand() & 0xff) << 16;
|
||||
ds->uuid |= (rand() & 0xff) << 24;
|
||||
return ds;
|
||||
}
|
||||
|
||||
/* we never allow a second dive site with the same uuid */
|
||||
struct dive_site *alloc_or_get_dive_site(uint32_t uuid, struct dive_site_table *ds_table)
|
||||
{
|
||||
|
@ -148,9 +161,8 @@ struct dive_site *alloc_or_get_dive_site(uint32_t uuid, struct dive_site_table *
|
|||
if (uuid && (ds = get_dive_site_by_uuid(uuid, ds_table)) != NULL)
|
||||
return ds;
|
||||
|
||||
ds = calloc(1, sizeof(*ds));
|
||||
if (!ds)
|
||||
exit(1);
|
||||
ds = alloc_dive_site();
|
||||
|
||||
add_dive_site_to_table(ds, ds_table);
|
||||
|
||||
// we should always be called with a valid uuid except in the special
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue