diff options
author | Michael Stahl <mstahl@redhat.com> | 2013-07-10 15:43:42 +0200 |
---|---|---|
committer | Fridrich Strba <fridrich@documentfoundation.org> | 2013-07-10 14:00:55 +0000 |
commit | d9b36d3623ce5d88bfaca7a31426fa126a6ce4ac (patch) | |
tree | d4308c85894b9d80872de97d19789c2ecbcaa850 /sd | |
parent | f773ba156d9ec25d6d612bb084b914b24858747e (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.cxx | 7 |
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()); |