diff options
| author | 2013-02-04 14:45:20 +0100 | |
|---|---|---|
| committer | 2013-04-29 11:17:54 +0200 | |
| commit | b2e61e44e9cd1fa2974784e819f13b5ce72088f5 (patch) | |
| tree | 991d67ac0294932330da8e87597611b3f88d43e1 | |
| parent | 0bb497b8d1bac2206df89a878ecb7e356d21fe99 (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.java | 3 |
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) { |