summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Carsten Hauge <carsten.hauge@sonymobile.com> 2013-02-04 14:45:20 +0100
committer Henrik Baard <henrik.baard@sonymobile.com> 2013-04-29 11:17:54 +0200
commitb2e61e44e9cd1fa2974784e819f13b5ce72088f5 (patch)
tree991d67ac0294932330da8e87597611b3f88d43e1
parent0bb497b8d1bac2206df89a878ecb7e356d21fe99 (diff)
Avoid IllegalArgumentException in Preference.java compareTo()
In some situations the collection.sort() algoritm fails in compareTo() with a: java.lang.IllegalArgumentException: Comparison method violates its general contract!, due to a more strict validation of the compare contract. This strict validation was introduced in java 1.7. See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6804124 This fix should prevent the sorting from crashing. Change-Id: I64230e7f62f83c99d7a6274964bb2988ae843826
-rw-r--r--core/java/android/preference/Preference.java3
1 files changed, 3 insertions, 0 deletions
diff --git a/core/java/android/preference/Preference.java b/core/java/android/preference/Preference.java
index e343e830d894..6c0296537b50 100644
--- a/core/java/android/preference/Preference.java
+++ b/core/java/android/preference/Preference.java
@@ -1072,6 +1072,9 @@ public class Preference implements Comparable<Preference>, OnDependencyChangeLis
|| (mOrder == DEFAULT_ORDER && another.mOrder != DEFAULT_ORDER)) {
// Do order comparison
return mOrder - another.mOrder;
+ } else if (mTitle == another.mTitle) {
+ // If titles are null or share same object comparison
+ return 0;
} else if (mTitle == null) {
return 1;
} else if (another.mTitle == null) {