mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-19 14:25:27 +00:00
Correctly deal with empty XML files
Previously we could end up with a bogus dive with all zero data in it. Adding dives/test24.xml to be able to test that we handle this case correctly. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
0d637c2fa9
commit
421366d0fb
2 changed files with 18 additions and 2 deletions
4
dives/test24.xml
Normal file
4
dives/test24.xml
Normal file
|
@ -0,0 +1,4 @@
|
|||
<dives>
|
||||
<program name='subsurface' version='1'></program>
|
||||
</dives>
|
||||
<!-- intentionally empty dive file - should register as no dives -->
|
16
parse-xml.c
16
parse-xml.c
|
@ -1173,11 +1173,23 @@ static void try_to_fill_trip(struct dive **divep, const char *name, char *buf)
|
|||
}
|
||||
|
||||
/*
|
||||
* File boundaries are dive boundaries. But sometimes there are
|
||||
* While in some formats file boundaries are dive boundaries, in many
|
||||
* others (as for example in our native format) there are
|
||||
* multiple dives per file, so there can be other events too that
|
||||
* trigger a "new dive" marker and you may get some nesting due
|
||||
* to that. Just ignore nesting levels.
|
||||
* On the flipside it is possible that we start an XML file that ends
|
||||
* up having no dives in it at all - don't create a bogus empty dive
|
||||
* for those. It's not entirely clear what is the minimum set of data
|
||||
* to make a dive valid, but if it has no location, no date and no
|
||||
* samples I'm pretty sure it's useless.
|
||||
*/
|
||||
static gboolean is_dive(void)
|
||||
{
|
||||
return (cur_dive &&
|
||||
(cur_dive->location || cur_dive->when || cur_dive->samples));
|
||||
}
|
||||
|
||||
static void dive_start(void)
|
||||
{
|
||||
if (cur_dive)
|
||||
|
@ -1188,7 +1200,7 @@ static void dive_start(void)
|
|||
|
||||
static void dive_end(void)
|
||||
{
|
||||
if (!cur_dive)
|
||||
if (!is_dive())
|
||||
return;
|
||||
record_dive(cur_dive);
|
||||
cur_dive = NULL;
|
||||
|
|
Loading…
Add table
Reference in a new issue