summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Shigeki Yokomichi <shigeki.x.yokomichi@sonymobile.com> 2016-10-12 18:35:17 +0900
committer Shunta Sato <shunta.sato@sonymobile.com> 2016-10-24 13:30:49 +0900
commit0bd28e2c5f7fd7e4448ae489b425e4e5cee57f9a (patch)
treea1ed0d2ff704763099f16b5deec41dca4b1baf9f
parent1a02a2683814661fd1fb6ab811fc8f76dc610511 (diff)
Avoid NPE around mReusedTask of ActivityStarter
Symptom: System crash by NPE is observed on ActivityStarter during phone boot-up. Detail and sample: ActivityStarter has possibility to be called itself recursively by calling TaskRecord$performClearTaskLocked(). Then class variable of mReusedTask is initialized to null after the call, because the recursive call isn't guarded by synchronized block. Then NPE crash occurs on next statement. Solutions: Avoid to use the class variable on null possibility statement. Bug: 32361138 Change-Id: Iaea3e066a6f7134fcae4338ff864bb236241194c
-rw-r--r--services/core/java/com/android/server/am/ActivityStarter.java4
1 files changed, 2 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java
index 85fa139906dd..32a798b33bcf 100644
--- a/services/core/java/com/android/server/am/ActivityStarter.java
+++ b/services/core/java/com/android/server/am/ActivityStarter.java
@@ -1540,9 +1540,9 @@ class ActivityStarter {
== (FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK)) {
// The caller has requested to completely replace any existing task with its new
// activity. Well that should not be too hard...
+ intentActivity.task.performClearTaskLocked();
+ intentActivity.task.setIntent(mStartActivity);
mReuseTask = intentActivity.task;
- mReuseTask.performClearTaskLocked();
- mReuseTask.setIntent(mStartActivity);
// When we clear the task - focus will be adjusted, which will bring another task
// to top before we launch the activity we need. This will temporary swap their
// mTaskToReturnTo values and we don't want to overwrite them accidentally.