include/vcl/weld.hxx | 3 ++- sfx2/source/dialog/basedlgs.cxx | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-)
New commits: commit 7364a206a67f73513590fbb55e9e1d630c97aab1 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Thu Oct 24 08:43:59 2019 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Thu Oct 24 10:48:37 2019 +0200 tdf#128077 crash with calc dialogs and multiple windows regression from commit bf359d01ac8b1e0292e8a92c38e58c03e6c17d8b add a Dialog::runAsync for the non-controller case we end up destroying the dialog controller while the controller is in it's own method, so keep it alive for the duration. Change-Id: I0f26b4d40351ad62378f58c560f1a6d69d57a88e Reviewed-on: https://gerrit.libreoffice.org/81425 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index 043803435d43..300cdf04641f 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -27,6 +27,7 @@ #include <com/sun/star/accessibility/XAccessibleRelationSet.hpp> #include <com/sun/star/accessibility/XAccessible.hpp> +#include <memory> #include <vector> namespace com @@ -1964,7 +1965,7 @@ public: virtual ~Builder() {} }; -class VCL_DLLPUBLIC DialogController +class VCL_DLLPUBLIC DialogController : public std::enable_shared_from_this<DialogController> { public: virtual Dialog* getDialog() = 0; diff --git a/sfx2/source/dialog/basedlgs.cxx b/sfx2/source/dialog/basedlgs.cxx index c1906d547cf0..30f0d0f71ba9 100644 --- a/sfx2/source/dialog/basedlgs.cxx +++ b/sfx2/source/dialog/basedlgs.cxx @@ -183,6 +183,12 @@ bool SfxModelessDialogController::IsClosing() const void SfxModelessDialogController::EndDialog() { + if (m_xImpl->bClosing) + return; + // In the case of async dialogs, the call to SfxDialogController::EndDialog + // may delete this object, so keep myself alive for the duration of this + // stack frame. + auto aHoldSelf = shared_from_this(); m_xImpl->bClosing = true; SfxDialogController::EndDialog(); if (!m_xImpl) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits