aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2014-01-01 11:55:54 +0100
committerSamuel Tardieu <sam@rfc1149.net>2014-01-01 11:56:29 +0100
commit08fde3648e575a7eead15bd830b4936451275e14 (patch)
treebfa1b27cd7beb734aa40d95989d23f06fae1ced7 /main
parent67fd44829a9704c618259db895d6fd4940d26b41 (diff)
downloadcgeo-08fde3648e575a7eead15bd830b4936451275e14.zip
cgeo-08fde3648e575a7eead15bd830b4936451275e14.tar.gz
cgeo-08fde3648e575a7eead15bd830b4936451275e14.tar.bz2
fix #3500: crash with `null` completion in lazy lists
Also, add tests for `LazyInitializedList`.
Diffstat (limited to 'main')
-rw-r--r--main/src/cgeo/geocaching/utils/LazyInitializedList.java8
1 files changed, 8 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/utils/LazyInitializedList.java b/main/src/cgeo/geocaching/utils/LazyInitializedList.java
index 27649e8..e607919 100644
--- a/main/src/cgeo/geocaching/utils/LazyInitializedList.java
+++ b/main/src/cgeo/geocaching/utils/LazyInitializedList.java
@@ -1,7 +1,10 @@
package cgeo.geocaching.utils;
+import org.eclipse.jdt.annotation.NonNull;
+
import java.util.AbstractList;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.concurrent.Callable;
@@ -9,6 +12,7 @@ public abstract class LazyInitializedList<ElementType> extends AbstractList<Elem
private volatile List<ElementType> list;
+ @NonNull
private List<ElementType> getList() {
if (list == null) {
synchronized(this) {
@@ -20,6 +24,10 @@ public abstract class LazyInitializedList<ElementType> extends AbstractList<Elem
} catch (final Exception e) {
Log.e("LazyInitializedList.getList", e);
}
+ if (list == null) {
+ Log.e("LazyInitializedList.getList: using an empty list as a fallback");
+ list = Collections.emptyList();
+ }
}
}
return list;