diff options
author | Michael Stahl <mstahl@redhat.com> | 2017-01-13 00:16:02 +0100 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2017-01-16 11:33:18 +0000 |
commit | 821b9ee9ba4ab13c3525009eb7e6a8fd60176dd7 (patch) | |
tree | 28d415d403746a3dc07c7c48061c06c350907ad1 /g | |
parent | c538808b29575995f4fab45a5b7dbb56ce54f4aa (diff) |
tdf#105188 sd: fix shutdown crash after accessing master pages
The problem here is that the destructor of SdModule does a lot of
things, including destroying an SdXImpressDocument that is referenced
from some SdGlobalResourceContainer.
This calls SD_MOD() to get the SdModule to get some resource, but at
that point SfxApplication::GetModule() returns null, because the
sequence was changed from first deleting the SfxModules, then clearing
the pointer in ~SfxModule to null, to unique_ptr::reset(), which, at
least in libstdc++, is implemented via std::swap, so it clears the
pointer before deleting the SfxModule.
It appears rather brittle to rely on such a subtle detail, so refactor
things so that SdGlobalResourceContainer is no longer owned by SdModule
but has its own pet XTerminationListener, which means it will be
destroyed earlier, while the SdModule is still fully alive.
(regression from f7b1cd66167050afecf487e3d89ea12de74200b5)
Change-Id: I7f03f3adf431be8728ef3d65a078b536cb96f959
(cherry picked from commit 983ac87793a891855c7d25c42fe795908543716c)
Reviewed-on: https://gerrit.libreoffice.org/33033
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Diffstat (limited to 'g')
0 files changed, 0 insertions, 0 deletions