Kaydet (Commit) 805adaae authored tarafından Caolán McNamara's avatar Caolán McNamara

Resolves: rhbz#1454693 segv if tiled rendering is interrupted

Change-Id: I1131f246c43806adb8a83f6eeafca2b734851a0e
Reviewed-on: https://gerrit.libreoffice.org/38888Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst b3947785
......@@ -1148,6 +1148,14 @@ callback (gpointer pData)
LOKDocView* pDocView = LOK_DOC_VIEW (pCallback->m_pDocView);
LOKDocViewPrivate& priv = getPrivate(pDocView);
//callback registered before the widget was destroyed.
//Use existance of lokThreadPool as flag it was torn down
if (!priv->lokThreadPool)
{
delete pCallback;
return G_SOURCE_REMOVE;
}
switch (pCallback->m_nType)
{
case LOK_CALLBACK_INVALIDATE_TILES:
......@@ -2627,6 +2635,13 @@ static void lok_doc_view_destroy (GtkWidget* widget)
priv->m_pDocument->pClass->setView(priv->m_pDocument, priv->m_nViewId);
priv->m_pDocument->pClass->registerCallback(priv->m_pDocument, nullptr, nullptr);
}
if (priv->lokThreadPool)
{
g_thread_pool_free(priv->lokThreadPool, true, true);
priv->lokThreadPool = nullptr;
}
aGuard.unlock();
if (priv->m_pDocument)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment