Ticket #1626: josm-nmea-bugfix.java

File josm-nmea-bugfix.java, 1.3 KB (added by egore911@…, 16 years ago)
Line 
1Index: src/org/openstreetmap/josm/io/NmeaReader.java
2===================================================================
3--- src/org/openstreetmap/josm/io/NmeaReader.java (Revision 1014)
4+++ src/org/openstreetmap/josm/io/NmeaReader.java (Arbeitskopie)
5@@ -8,6 +8,7 @@
6 import java.io.InputStream;
7 import java.io.InputStreamReader;
8 import java.util.ArrayList;
9+import java.util.Arrays;
10 import java.util.Collection;
11
12 import org.openstreetmap.josm.data.coor.LatLon;
13@@ -139,6 +140,9 @@
14 String nmea = nmeaAndChecksum[0];
15 // XXX: No need for it: String checksum = nmeaAndChecksum[1];
16 String[] e = nmea.split(",");
17+ if (e.length == 0) {
18+ continue;
19+ }
20 if (NMEA_TYPE.GPRMC.equals(e[TYPE])) {
21 LatLon latLon = parseLatLon(e);
22 if (latLon == null) {
23@@ -156,7 +160,11 @@
24 }
25
26 private LatLon parseLatLon(String[] e) throws NumberFormatException {
27- String widthNorth = e[GPRMC.WIDTH_NORTH.position].trim();
28+ // If the array looks bogus don't try to get valuable information from it
29+ if (e.length != 13) {
30+ return null;
31+ }
32+ String widthNorth = e[GPRMC.WIDTH_NORTH.position].trim();
33 String lengthEast = e[GPRMC.LENGTH_EAST.position].trim();
34 if ("".equals(widthNorth) || "".equals(lengthEast)) {
35 return null;