• Stephan Bergmann's avatar
    SwXAutoTextEntry needs a disposal protocol · 1677faab
    Stephan Bergmann yazdı
    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
    1677faab