diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2013-08-25 14:29:12 +0200 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2013-08-25 14:29:12 +0200 |
| commit | bfb0f601991648e16ee19bf57ec2ca813d2972f2 (patch) | |
| tree | 479af86f7a6395017e9bd8a4a87506a9607ed0af | |
| parent | 55844edaf8351d0ca3134213e997428402174513 (diff) | |
| download | cgeo-bfb0f601991648e16ee19bf57ec2ca813d2972f2.zip cgeo-bfb0f601991648e16ee19bf57ec2ca813d2972f2.tar.gz cgeo-bfb0f601991648e16ee19bf57ec2ca813d2972f2.tar.bz2 | |
fix #3187: NPE in distance filter
| -rw-r--r-- | main/src/cgeo/geocaching/filter/DistanceFilter.java | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/main/src/cgeo/geocaching/filter/DistanceFilter.java b/main/src/cgeo/geocaching/filter/DistanceFilter.java index 86b09c7..2f39473 100644 --- a/main/src/cgeo/geocaching/filter/DistanceFilter.java +++ b/main/src/cgeo/geocaching/filter/DistanceFilter.java @@ -24,9 +24,14 @@ class DistanceFilter extends AbstractFilter { @Override public boolean accepts(final Geocache cache) { final Geopoint currentPos = new Geopoint(geo.getLocation()); - final float distance = currentPos.distanceTo(cache.getCoords()); - - return (distance >= minDistance) && (distance <= maxDistance); + final Geopoint coords = cache.getCoords(); + if (coords == null) { + // If a cache has no coordinates, consider it to be out of range. It will + // happen with archived cache. + return false; + } + final float distance = currentPos.distanceTo(coords); + return distance >= minDistance && distance <= maxDistance; } public static class Factory implements IFilterFactory { |
