diff options
Diffstat (limited to 'src/core/javascript_dialog_controller.cpp')
-rw-r--r-- | src/core/javascript_dialog_controller.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/core/javascript_dialog_controller.cpp b/src/core/javascript_dialog_controller.cpp index c3c133a0d..d789b184f 100644 --- a/src/core/javascript_dialog_controller.cpp +++ b/src/core/javascript_dialog_controller.cpp @@ -47,8 +47,9 @@ void JavaScriptDialogControllerPrivate::dialogFinished(bool accepted, const base::string16 &promptValue) { - // Clear the queue first as this could result in the engine asking us to run another dialog. - JavaScriptDialogManagerQt::GetInstance()->removeDialogForContents(contents); + // Clear the queue first as this could result in the engine asking us to run another dialog, + // but hold a shared pointer so the dialog does not get deleted prematurely when running in-process. + QSharedPointer<JavaScriptDialogController> dialog = JavaScriptDialogManagerQt::GetInstance()->takeDialogForContents(contents); callback.Run(accepted, promptValue); } |