diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 09c4e20b6d5aa..9ceac41a8bcaf 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -41,11 +41,11 @@ class Task { void addAppToken(int addPos, AppWindowToken wtoken) { final int lastPos = mAppTokens.size(); - if (addPos > lastPos) { - // We lost an app token. Don't crash though. - Slog.e(TAG, "Task.addAppToken: Out of bounds attempt token=" + wtoken + " addPos=" - + addPos + " lastPos=" + lastPos); - addPos = lastPos; + for (int pos = 0; pos < lastPos && pos < addPos; ++pos) { + if (mAppTokens.get(pos).removed) { + // addPos assumes removed tokens are actually gone. + ++addPos; + } } mAppTokens.add(addPos, wtoken); mDeferRemoval = false;