svx/source/dialog/cuicharmap.cxx |   12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

New commits:
commit 51f302eecd2bde5a4afb70e79af7ea933443cf37
Author:     Andras Timar <[email protected]>
AuthorDate: Sun Mar 1 18:10:56 2026 +0100
Commit:     Miklos Vajna <[email protected]>
CommitDate: Mon Mar 2 15:07:29 2026 +0100

    Fix SIGABRT in SvxCharacterMap idle handler after dialog destruction
    
    The destructor only cancelled pending idle rendering events
    (m_nShowRenderIdleEvent, m_nSearchRenderIdleEvent) in non-LOKit mode,
    but scheduleShowSetBackgroundRendering() posts them unconditionally.
    In LOKit mode, closing the InsertSymbol dialog left dangling idle
    events that fired on a destroyed object, causing a pure virtual call
    and std::terminate.
    
    Cancel the idle events unconditionally in the destructor.
    
    Change-Id: Ia2f1a0fbee6bdd6cab8f710fdb287727b4caa074
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200725
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Miklos Vajna <[email protected]>

diff --git a/svx/source/dialog/cuicharmap.cxx b/svx/source/dialog/cuicharmap.cxx
index 6dedb13647f3..8a1360194dc6 100644
--- a/svx/source/dialog/cuicharmap.cxx
+++ b/svx/source/dialog/cuicharmap.cxx
@@ -1188,14 +1188,10 @@ void SvxCharacterMap::selectCharByCode(Radix radix)
 
 SvxCharacterMap::~SvxCharacterMap()
 {
-    if (!comphelper::LibreOfficeKit::isActive())
-    {
-        if (m_nShowRenderIdleEvent)
-            Application::RemoveUserEvent(m_nShowRenderIdleEvent);
-        if (m_nSearchRenderIdleEvent)
-            Application::RemoveUserEvent(m_nSearchRenderIdleEvent);
-    }
-
+    if (m_nShowRenderIdleEvent)
+        Application::RemoveUserEvent(m_nShowRenderIdleEvent);
+    if (m_nSearchRenderIdleEvent)
+        Application::RemoveUserEvent(m_nSearchRenderIdleEvent);
 }
 
 IMPL_LINK_NOARG(SvxCharacterMap, DecimalCodeChangeHdl, weld::Entry&, void)

Reply via email to