summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2013-07-10 15:43:42 +0200
committerFridrich Strba <fridrich@documentfoundation.org>2013-07-10 14:00:55 +0000
commitd9b36d3623ce5d88bfaca7a31426fa126a6ce4ac (patch)
treed4308c85894b9d80872de97d19789c2ecbcaa850 /sd
parentf773ba156d9ec25d6d612bb084b914b24858747e (diff)
rhbz#965646: sd: unregister slide sorter listener to avoid crashes
sd::slidesorter::controller::Listener::Notify(): when the ~SdDrawDocument sends a HINT_MODELCLEARED, unregister since the document doesn't exist any more. This should hopefully avoids accessing a SfxViewShell instance that has apparently already been deleted somewhere in one of the listeners. Change-Id: I0ba9a58d77741a52b652a6c55c2327db80859011 (cherry picked from commit a9e0c222f504104124485ef4684ce6f79d3dee52) Reviewed-on: https://gerrit.libreoffice.org/4813 Reviewed-by: Fridrich Strba <fridrich@documentfoundation.org> Tested-by: Fridrich Strba <fridrich@documentfoundation.org>
Diffstat (limited to 'sd')
-rw-r--r--sd/source/ui/slidesorter/controller/SlsListener.cxx7
1 files changed, 7 insertions, 0 deletions
diff --git a/sd/source/ui/slidesorter/controller/SlsListener.cxx b/sd/source/ui/slidesorter/controller/SlsListener.cxx
index 17a8a141045b..e85a6c85f6d7 100644
--- a/sd/source/ui/slidesorter/controller/SlsListener.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsListener.cxx
@@ -304,6 +304,13 @@ void Listener::Notify (
SdrHint& rSdrHint (*PTR_CAST(SdrHint,&rHint));
switch (rSdrHint.GetKind())
{
+ case HINT_MODELCLEARED:
+ if (&rBroadcaster == mrSlideSorter.GetModel().GetDocument())
+ { // rhbz#965646 stop listening to dying document
+ EndListening(rBroadcaster);
+ return;
+ }
+ break;
case HINT_PAGEORDERCHG:
if (&rBroadcaster == mrSlideSorter.GetModel().GetDocument())
HandleModelChange(rSdrHint.GetPage());