summaryrefslogtreecommitdiff
path: root/driver_nmea0183.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2014-09-19 07:00:59 -0400
committerEric S. Raymond <esr@thyrsus.com>2014-09-19 07:00:59 -0400
commit4308073b7956cb57189a334c3bc680ae576abf14 (patch)
treeff5cccbf560d05ee309d92c59f2c777190c6a37b /driver_nmea0183.c
parentb47c9e94e1ef26e3f99cb60c7042e2c9e795ef9d (diff)
downloadgpsd-4308073b7956cb57189a334c3bc680ae576abf14.tar.gz
A bug fix for error modeling when NMEA 0183 reports empty DOP fields.
Required 13 regression-test rebuilds.
Diffstat (limited to 'driver_nmea0183.c')
-rw-r--r--driver_nmea0183.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/driver_nmea0183.c b/driver_nmea0183.c
index 4441f9a0..59f2d848 100644
--- a/driver_nmea0183.c
+++ b/driver_nmea0183.c
@@ -502,9 +502,12 @@ static gps_mask_t processGSA(int count, char *field[],
mask = MODE_SET;
gpsd_report(&session->context->errout, LOG_PROG,
"GPGSA sets mode %d\n", session->newdata.mode);
- session->gpsdata.dop.pdop = safe_atof(field[15]);
- session->gpsdata.dop.hdop = safe_atof(field[16]);
- session->gpsdata.dop.vdop = safe_atof(field[17]);
+ if (field[15][0])
+ session->gpsdata.dop.pdop = safe_atof(field[15]);
+ if (field[16][0])
+ session->gpsdata.dop.hdop = safe_atof(field[16]);
+ if (field[17][0])
+ session->gpsdata.dop.vdop = safe_atof(field[17]);
session->gpsdata.satellites_used = 0;
memset(session->gpsdata.used, 0, sizeof(session->gpsdata.used));
/* the magic 6 here counts the tag, two mode fields, and the DOP fields */