Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0bd28e2c authored by Shigeki Yokomichi's avatar Shigeki Yokomichi Committed by Shunta Sato
Browse files

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
parent 1a02a268
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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.