SIGFPE in fixup_divep at dive.c:479 when importing dive with duration == 0
Lutz Vieweg
lvml at 5t9.de
Sat Aug 18 08:20:57 PDT 2012
Hi,
subsurface just crashed on me when I tried to import many dives I had
exported from SDM earlier.
Obvious cause is line dive.c:479, which divides by zero if the dive
duration is zero:
> dive->meandepth.mm = dive->maxdepth.mm*(dive->duration.seconds-asc_desc_time)/dive->duration.seconds;
I applied the following fix:
diff --git a/dive.c b/dive.c
index f4bf497..fdcd71f 100644
--- a/dive.c
+++ b/dive.c
@@ -476,7 +476,11 @@ struct dive *fixup_dive(struct dive *dive)
{
/* Assume an ascent/descent rate of 9 m/min */
int asc_desc_time = dive->maxdepth.mm*60/9000;
- dive->meandepth.mm =
dive->maxdepth.mm*(dive->duration.seconds-asc_desc_time)/dive->duration.seconds;
+ if (dive->duration.seconds > 0) {
+ dive->meandepth.mm =
dive->maxdepth.mm*(dive->duration.seconds-asc_desc_time)/dive->duration.seconds;
+ } else {
+ dive->meandepth.mm = dive->maxdepth.mm;
+ }
return dive;
}
Regards,
Lutz Vieweg
More information about the subsurface
mailing list