summaryrefslogtreecommitdiffstats
path: root/src/core/javascript_dialog_controller.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/javascript_dialog_controller.cpp')
-rw-r--r--src/core/javascript_dialog_controller.cpp5
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);
}