From b2e61e44e9cd1fa2974784e819f13b5ce72088f5 Mon Sep 17 00:00:00 2001 From: Carsten Hauge Date: Mon, 4 Feb 2013 14:45:20 +0100 Subject: [PATCH] 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 --- core/java/android/preference/Preference.java | 3 +++ 1 file changed, 3 insertions(+) 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, 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) { -- 2.11.0