aboutsummaryrefslogtreecommitdiffstats
path: root/core/dive.c
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org>2019-04-14 14:24:24 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-04-15 11:22:44 +1200
commit606c3a02451cb41b984528cbf98ecd9a3f91401f (patch)
tree154ce143cdbc38d249f73d8957385fb1698c1659 /core/dive.c
parent88a9b8abf54f74f44fb709326c551019143cb135 (diff)
downloadsubsurface-606c3a02451cb41b984528cbf98ecd9a3f91401f.tar.gz
make sure to clear dives on dive split failure
The dive splitting code returns an error code when splitting fails, but it turns out that the C++ UI code doesn't actually look at the error code, and instead expected the resulting dives to be NULL if an error happened and the split didn't succeed for whatever reason. Which is kind of lazy of it, but we might as well clear the resulting dives and make the UI code happy. This should fix the problem that Celia Marlowe reported on the Subsurface google groups forum. Reported-by: Celia Marlowe Acked-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Fixes: 145f70aab5 ("Undo: implement split-out of dive computer") Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'core/dive.c')
-rw-r--r--core/dive.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/core/dive.c b/core/dive.c
index 14ab13f95..82a318089 100644
--- a/core/dive.c
+++ b/core/dive.c
@@ -3596,8 +3596,6 @@ static int split_dive_at(const struct dive *dive, int a, int b, struct dive **ou
struct divecomputer *dc1, *dc2;
struct event *event, **evp;
- *out1 = *out2 = NULL;
-
/* if we can't find the dive in the dive list, don't bother */
if ((nr = get_divenr(dive)) < 0)
return -1;
@@ -3727,6 +3725,7 @@ int split_dive(const struct dive *dive, struct dive **new1, struct dive **new2)
int at_surface, surface_start;
const struct divecomputer *dc;
+ *new1 = *new2 = NULL;
if (!dive)
return -1;
@@ -3768,6 +3767,7 @@ int split_dive_at_time(const struct dive *dive, duration_t time, struct dive **n
int i = 0;
struct sample *sample = dive->dc.sample;
+ *new1 = *new2 = NULL;
if (!dive)
return -1;
while(sample->time.seconds < time.seconds) {