aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2013-08-25 14:29:12 +0200
committerSamuel Tardieu <sam@rfc1149.net>2013-08-25 14:29:12 +0200
commitbfb0f601991648e16ee19bf57ec2ca813d2972f2 (patch)
tree479af86f7a6395017e9bd8a4a87506a9607ed0af
parent55844edaf8351d0ca3134213e997428402174513 (diff)
downloadcgeo-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.java11
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 {