summaryrefslogtreecommitdiff
path: root/core/java/android/app/Dialog.java
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2013-12-09 14:50:41 -0800
committerAlan Viverette <alanv@google.com>2013-12-09 14:50:41 -0800
commitc21569aef84b4c9bdccde08be389b477b5c1ada9 (patch)
tree9625e6d665cc41c062a4ccc89aa2a8d4a2d51d34 /core/java/android/app/Dialog.java
parent5436b0cfe3d73d4d24908f2051ce2cd923fd7c9c (diff)
Prevent reentrance in Dialog.findViewById()
BUG: 12063988 Change-Id: I58117949dde589bcdfcfe88ec90b4a6e8418fe2a
Diffstat (limited to 'core/java/android/app/Dialog.java')
-rw-r--r--core/java/android/app/Dialog.java7
1 files changed, 6 insertions, 1 deletions
diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java
index a041a46f8b91..17903ea92f87 100644
--- a/core/java/android/app/Dialog.java
+++ b/core/java/android/app/Dialog.java
@@ -105,6 +105,9 @@ public class Dialog implements DialogInterface, Window.Callback,
private boolean mShowing = false;
private boolean mCanceled = false;
+ /** Whether the execution path is currently in onCreate(). */
+ private boolean mInOnCreate = false;
+
private final Handler mHandler = new Handler();
private static final int DISMISS = 0x43;
@@ -356,8 +359,10 @@ public class Dialog implements DialogInterface, Window.Callback,
// internal method to make sure mcreated is set properly without requiring
// users to call through to super in onCreate
void dispatchOnCreate(Bundle savedInstanceState) {
- if (!mCreated) {
+ if (!mCreated && !mInOnCreate) {
+ mInOnCreate = true;
onCreate(savedInstanceState);
+ mInOnCreate = false;
mCreated = true;
}
}