diff options
author | Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de> | 2022-06-02 15:51:47 +0200 |
---|---|---|
committer | Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de> | 2022-06-14 10:20:08 +0200 |
commit | 4879f99b824036b3d409ed52f74dc3eb3b4949e4 (patch) | |
tree | 1c56805c336d83aabbd65f91713434abc33281c9 /toolkit | |
parent | c3ed41752237a7a70c856dfb0d618f1c2eacea5a (diff) |
Fix leak with stock widgets in a dialog from an extension
When loading a dialog from XDL, buttons can have dlg:button-type="cancel"
or dlg:button-type="help". These buttons might not have a peer when
they are not referenced from the extension.
In this case, they also weren't disposed when the dialog was disposed,
leading to an abort on exit.
Change-Id: I799d7535b766984fde47cafbe41ee6e89e476205
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135266
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
Diffstat (limited to 'toolkit')
-rw-r--r-- | toolkit/source/helper/unowrapper.cxx | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/toolkit/source/helper/unowrapper.cxx b/toolkit/source/helper/unowrapper.cxx index 6a12b915b4aa..080847154cb2 100644 --- a/toolkit/source/helper/unowrapper.cxx +++ b/toolkit/source/helper/unowrapper.cxx @@ -238,6 +238,12 @@ void UnoWrapper::WindowDestroyed( vcl::Window* pWindow ) css::uno::Reference< css::lang::XComponent > xComp = pClient->GetComponentInterface( false ); xComp->dispose(); } + else + { + // We need it to dispose the child windows properly (even without window peer), + // otherwise the vcl::Window will be leaked. + pClient.disposeAndClear(); + } pChild = pNextChild; } |