Fix NPE in CallCard.onQueryComplete (bug 1980378).
David Brown [Mon, 6 Jul 2009 18:28:31 +0000 (11:28 -0700)]
Apparently in some (very rare) cases it's possible for a Call to have no
connections by the time we try to update the CallCard.

I was never able to reproduce this, but I can at least fix
CallCard.onQueryComplete() to gracefully handle a null connection.

TESTED: lots of incoming and outgoing calls; confirmed no crashes, and
        that the info on the CallCard is still correct.

src/com/android/phone/CallCard.java

index 893a3c4..26c04f1 100755 (executable)
@@ -638,9 +638,12 @@ public class CallCard extends FrameLayout
             Connection conn = call.getEarliestConnection();
             PhoneUtils.CallerInfoToken cit =
                    PhoneUtils.startGetCallerInfo(getContext(), conn, this, null);
-            int presentation = conn.getNumberPresentation();
+
+            int presentation = Connection.PRESENTATION_ALLOWED;
+            if (conn != null) presentation = conn.getNumberPresentation();
             if (DBG) log("- onQueryComplete: presentation=" + presentation
                     + ", contactExists=" + ci.contactExists);
+
             // Depending on whether there was a contact match or not, we want to pass in different
             // CallerInfo (for CNAP). Therefore if ci.contactExists then use the ci passed in.
             // Otherwise, regenerate the CIT from the Connection and use the CallerInfo from there.