svx/source/dialog/ThemeDialog.cxx |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

New commits:
commit 2b2fdfa0e9aea207a065506c56c2a0033b4cbd44
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Mon Jul 24 10:16:11 2023 +0200
Commit:     Tomaž Vajngerl <qui...@gmail.com>
CommitDate: Mon Jul 24 16:38:27 2023 +0200

    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 <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>
    (cherry picked from commit 2ee535bfdb089511261daff20e515714ed2c0563)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154851
    Tested-by: Jenkins

diff --git a/svx/source/dialog/ThemeDialog.cxx 
b/svx/source/dialog/ThemeDialog.cxx
index cda60a457b04..ab743b0df4bd 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)
         {
             mxAdd->set_sensitive(true);

Reply via email to