From 33bae1f49669e46ddbd1e68bc4e4a37843adc196 Mon Sep 17 00:00:00 2001 From: louis_chang Date: Fri, 1 Aug 2014 10:09:08 +0800 Subject: [PATCH] [ActivityManager] Fix NPE when start activity Symptom: NPE occurs in line 1184 (resultStack.sendActivityResultLocked) because resultStack is null. Root cause: When starting activity with FLAG_ACTIVITY_FORWARD_RESULT flag, the resultRecord could be updated, but the resultStack is not updated as well. In that case, the resultStack is still be null. The exception will occurs if the activity is not granted to launch due to permission denied. Solution: Update resultStack when resultRecord updates. Change-Id: I91634e4f713c2e8dbd1a71f358a8fd9beed83ec7 --- .../java/com/android/server/am/ActivityStackSupervisor.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 03dd3c0c7e49a..6f5866a620679 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -1315,7 +1315,6 @@ public final class ActivityStackSupervisor implements DisplayListener { } } } - ActivityStack resultStack = resultRecord == null ? null : resultRecord.task.stack; final int launchFlags = intent.getFlags(); @@ -1392,6 +1391,8 @@ public final class ActivityStackSupervisor implements DisplayListener { } } + final ActivityStack resultStack = resultRecord == null ? null : resultRecord.task.stack; + if (err != ActivityManager.START_SUCCESS) { if (resultRecord != null) { resultStack.sendActivityResultLocked(-1,