From 5123f606f654be54a40785ca081eaadc5421d378 Mon Sep 17 00:00:00 2001 From: Jan Holesovsky Date: Mon, 16 Dec 2019 17:50:57 +0100 Subject: android: Don't crash when double-tapping a text box. Here we were accessing the notification from a destructor; so avoid that when the pDoc is already being destructed. Reviewed-on: https://gerrit.libreoffice.org/85235 Tested-by: Jenkins CollaboraOffice Reviewed-by: Jan Holesovsky (cherry picked from commit 589147c64804adc5ceba895510559e2b6806d467) Reviewed-on: https://gerrit.libreoffice.org/85246 Tested-by: Jenkins Change-Id: I686bc9acf66788bfed6cf478fc7a1646ca8fd259 --- include/vcl/ITiledRenderable.hxx | 9 +++++++++ sd/source/ui/inc/unomodel.hxx | 5 +++++ sfx2/source/view/lokhelper.cxx | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/include/vcl/ITiledRenderable.hxx b/include/vcl/ITiledRenderable.hxx index 56922096d42b..5bd83d5ef2d4 100644 --- a/include/vcl/ITiledRenderable.hxx +++ b/include/vcl/ITiledRenderable.hxx @@ -298,6 +298,15 @@ public: virtual void executeFromFieldEvent(const StringMap&) { } + + /** + * It can happen that the underlying implementation is being disposed, but + * somebedy is trying to access the data... + */ + virtual bool isDisposed() const + { + return false; + } }; } // namespace vcl diff --git a/sd/source/ui/inc/unomodel.hxx b/sd/source/ui/inc/unomodel.hxx index 9a5da032893b..b320abda4912 100644 --- a/sd/source/ui/inc/unomodel.hxx +++ b/sd/source/ui/inc/unomodel.hxx @@ -269,6 +269,11 @@ public: virtual void moveSelectedParts(int nPosition, bool bDuplicate) override; /// @see vcl::ITiledRenderable::getPartInfo(). virtual OUString getPartInfo(int nPart) override; + /// @see vcl::ITiledRenderable::isDisposed(). + virtual bool isDisposed() const override + { + return mbDisposed; + } // XComponent diff --git a/sfx2/source/view/lokhelper.cxx b/sfx2/source/view/lokhelper.cxx index 9277ac5760c4..4da19e5c1c94 100644 --- a/sfx2/source/view/lokhelper.cxx +++ b/sfx2/source/view/lokhelper.cxx @@ -308,7 +308,7 @@ void SfxLokHelper::notifyInvalidation(SfxViewShell const* pThisView, const OStri void SfxLokHelper::notifyDocumentSizeChanged(SfxViewShell const* pThisView, const OString& rPayload, vcl::ITiledRenderable* pDoc, bool bInvalidateAll) { - if (!pDoc || !comphelper::LibreOfficeKit::isActive() || DisableCallbacks::disabled()) + if (!pDoc || pDoc->isDisposed() || !comphelper::LibreOfficeKit::isActive() || DisableCallbacks::disabled()) return; if (bInvalidateAll) -- cgit v1.2.3