Handle case of typed data with a null type
* There's an NPE if we downsync a contact containing a piece of
typed data for which there is no type specified in the database
* Check for this and accept "no type" as a match
Bug: 2539843
Change-Id: I155b635a1f9850af9813681f502f3565c3cfcd4b
diff --git a/src/com/android/exchange/adapter/ContactsSyncAdapter.java b/src/com/android/exchange/adapter/ContactsSyncAdapter.java
index ccfaa32..2fe5d7e 100644
--- a/src/com/android/exchange/adapter/ContactsSyncAdapter.java
+++ b/src/com/android/exchange/adapter/ContactsSyncAdapter.java
@@ -1017,7 +1017,10 @@
}
// Note Email.TYPE could be ANY type column; they are all defined in
// the private CommonColumns class in ContactsContract
- } else if (type < 0 || cv.getAsInteger(Email.TYPE) == type) {
+ // We'll accept either type < 0 (don't care), cv doesn't have a type,
+ // or the types are equal
+ } else if (type < 0 || !cv.containsKey(Email.TYPE) ||
+ cv.getAsInteger(Email.TYPE) == type) {
result = namedContentValues;
}
}