diff options
| author | Alan Viverette <alanv@google.com> | 2013-12-09 14:50:41 -0800 |
|---|---|---|
| committer | Alan Viverette <alanv@google.com> | 2013-12-09 14:50:41 -0800 |
| commit | c21569aef84b4c9bdccde08be389b477b5c1ada9 (patch) | |
| tree | 9625e6d665cc41c062a4ccc89aa2a8d4a2d51d34 /core/java/android/app/Dialog.java | |
| parent | 5436b0cfe3d73d4d24908f2051ce2cd923fd7c9c (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.java | 7 |
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; } } |
