Files
libreoffice/qadevOOo
Stephan Bergmann 1677faabbf SwXAutoTextEntry needs a disposal protocol
SwXAutoTextEntry::GetBodyText calls SwGlossaries::EditGroupDoc to create a
Sw[Web]GlosDocShell (which it then stores in xDocSh), and there must be a call
to that shell's DoClose to clean up its resources.  However, if a reference to
the SwXAutoTextEntry is still held during XDesktop::terminate (as can happen in
JunitTest_sw_unoapi_1, where such a reference is held from Java, thus
arbitrarily delaying destruction of the SwXAutoTextEntry until the JVM does GC),
SwXAutoTextEntry::Notify's PrepareCloseDoc case will release xDocSh without
calling DoClose, so an eventual ~SwXAutoTextEntry will not call DoClose either.
(And calling DoClose from withing SwXAutoTextEntry::Notify would cause a crash,
as it would destroy the SwGlosDocShell recursively from within its
SfxBroadcaster::Broadcast call.)

So introduce a disposal protocol for XAutoTextEntry and call it at least in the
place that caused the resource leak in JunitTest_sw_unoapi_1.  For lack of a
better inerface, reuse css.lang.XComponent for that protocol, even though this
scenario doesn't involve breaking cyclic references among UNO objects caused by
listener patterns.

Change-Id: Id6501b84e562950e40b83e0b1afd1b3184807856
2017-01-04 12:11:20 +01:00
..
2016-10-10 10:36:40 +00:00
2016-12-07 19:38:49 +09:00

Testsuite.