diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2023-07-24 10:16:11 +0200 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2023-07-24 12:45:02 +0200 |
commit | 78bf71884946456e5c072add9a83ad486b5f79e6 (patch) | |
tree | d5030165fb7172255770a8e10fff1d67b6b69601 /svx | |
parent | 5fba074e7f22ff0e5d5b9591a912193f7be8c08c (diff) |
fix COOL crash in theme dialog
==3975==ERROR: AddressSanitizer: heap-use-after-free
/opt/collaboraoffice/program/libmergedlo.so
std::vector<model::ColorSet, std::allocator<model::ColorSet>
>::clear()
/home/collabora/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_vector.h:1248
/opt/collaboraoffice/program/libmergedlo.so
operator()
/home/collabora/online-buildscripts/staging/builddir/libreoffice/svx/source/dialog/ThemeDialog.cxx:96
/opt/collaboraoffice/program/libmergedlo.so
std::function<void (int)>::operator()(int) const
/home/collabora/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:706
/opt/collaboraoffice/program/libmergedlo.so
Dialog::EndDialog(long)
/home/collabora/online-buildscripts/staging/builddir/libreoffice/vcl/source/window/dialog.cxx:1192
/opt/collaboraoffice/program/libmergedlo.so
jsdialog::ExecuteAction(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, rtl::OString
const&, std::map<rtl::OUString, rtl::OUString, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::OUString> > >&)
/home/collabora/online-buildscripts/staging/builddir/libreoffice/vcl/jsdialog/executor.cxx:566
/opt/collaboraoffice/program/libmergedlo.so
lcl_sendDialogEvent(unsigned long long, char const*)
/home/collabora/online-buildscripts/staging/builddir/libreoffice/desktop/source/lib/init.cxx:4735
/usr/bin/coolforkit
lok::Document::sendDialogEvent(unsigned long long, char const*)
/home/collabora/online-buildscripts/staging/builddir/libreoffice/include/LibreOfficeKit/LibreOfficeKit.hxx:323
/usr/bin/coolforkit
Change-Id: I7b34c9649c96f6745c2230ac347644fb45ec7f6e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154836
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/dialog/ThemeDialog.cxx | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/svx/source/dialog/ThemeDialog.cxx b/svx/source/dialog/ThemeDialog.cxx index 8af6f5975df2..29d12f25c779 100644 --- a/svx/source/dialog/ThemeDialog.cxx +++ b/svx/source/dialog/ThemeDialog.cxx @@ -86,7 +86,8 @@ IMPL_LINK_NOARG(ThemeDialog, SelectItem, ValueSet*, void) void ThemeDialog::runThemeColorEditDialog() { auto pDialog = std::make_shared<svx::ThemeColorEditDialog>(mpWindow, *mpCurrentColorSet); - weld::DialogController::runAsync(pDialog, [this, pDialog](sal_uInt32 nResult) { + std::shared_ptr<DialogController> xKeepAlive(shared_from_this()); + weld::DialogController::runAsync(pDialog, [this, xKeepAlive, pDialog](sal_uInt32 nResult) { if (nResult != RET_OK) return; auto aColorSet = pDialog->getColorSet(); |