summaryrefslogtreecommitdiff
path: root/altoslib
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2017-09-18 09:57:41 -0700
committerKeith Packard <keithp@keithp.com>2017-09-18 09:59:24 -0700
commit4f2cbe0c537c9f417aae310cc3b89f84e0915103 (patch)
treef3b76221b70f33eaef55648bc352e67c46d4f886 /altoslib
parentb9a00856aa4cf55ae4a143288058094ef8061134 (diff)
altoslib: Avoid crashing when computing stats for empty flight logs
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib')
-rw-r--r--altoslib/AltosFlightStats.java20
-rw-r--r--altoslib/AltosTimeSeries.java8
2 files changed, 18 insertions, 10 deletions
diff --git a/altoslib/AltosFlightStats.java b/altoslib/AltosFlightStats.java
index c2e4e2a3..ea1a9675 100644
--- a/altoslib/AltosFlightStats.java
+++ b/altoslib/AltosFlightStats.java
@@ -212,8 +212,11 @@ public class AltosFlightStats {
add_times(series, (int) prev.value, prev.time, state.time);
prev = state;
}
- if (prev != null)
- add_times(series, (int) prev.value, prev.time, series.accel_series.last().time);
+ if (prev != null) {
+ AltosTimeValue last_accel = series.accel_series.last();
+ if (last_accel != null)
+ add_times(series, (int) prev.value, prev.time, last_accel.time);
+ }
}
for (int s = 0; s <= AltosLib.ao_flight_invalid; s++) {
@@ -245,14 +248,15 @@ public class AltosFlightStats {
has_gps = true;
lat = pad_lat = gps.lat;
lon = pad_lon = gps.lon;
- for (AltosGPSTimeValue gtv : series.gps_series) {
- gps = gtv.gps;
- if (gps.locked && gps.nsat >= 4) {
- lat = gps.lat;
- lon = gps.lon;
+ if (series.gps_series != null) {
+ for (AltosGPSTimeValue gtv : series.gps_series) {
+ gps = gtv.gps;
+ if (gps.locked && gps.nsat >= 4) {
+ lat = gps.lat;
+ lon = gps.lon;
+ }
}
}
-
}
max_height = AltosLib.MISSING;
diff --git a/altoslib/AltosTimeSeries.java b/altoslib/AltosTimeSeries.java
index b3c432fc..9f3b4d80 100644
--- a/altoslib/AltosTimeSeries.java
+++ b/altoslib/AltosTimeSeries.java
@@ -151,11 +151,15 @@ public class AltosTimeSeries implements Iterable<AltosTimeValue>, Comparable<Alt
}
public AltosTimeValue first() {
- return values.get(0);
+ if (values.size() > 0)
+ return values.get(0);
+ return null;
}
public AltosTimeValue last() {
- return values.get(values.size() - 1);
+ if (values.size() > 0)
+ return values.get(values.size() - 1);
+ return null;
}
public double average() {