Blame SOURCES/0163-libreofficekit-fix-mismatched-free-delete.patch

f325b2
From 6ac4def0a86d75c2ffc49ef8319515ba4bff26cc Mon Sep 17 00:00:00 2001
f325b2
From: Miklos Vajna <vmiklos@collabora.co.uk>
f325b2
Date: Mon, 28 Sep 2015 09:06:10 +0200
f325b2
Subject: [PATCH 163/398] libreofficekit: fix mismatched free() / delete
f325b2
f325b2
Change-Id: I60eb53d4bf9943fd52e0a9d8e3574a7d1cc027e0
f325b2
(cherry picked from commit 0067b4df75cdbeb325024cd2b66e3d64fe8b3fcd)
f325b2
---
f325b2
 libreofficekit/source/gtk/lokdocview.cxx | 28 ++++++++++++++--------------
f325b2
 libreofficekit/source/gtk/tilebuffer.cxx | 11 ++++++++---
f325b2
 libreofficekit/source/gtk/tilebuffer.hxx |  3 +++
f325b2
 3 files changed, 25 insertions(+), 17 deletions(-)
f325b2
f325b2
diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx
f325b2
index 7c52ce2e2efb..6679cee56cd3 100644
f325b2
--- a/libreofficekit/source/gtk/lokdocview.cxx
f325b2
+++ b/libreofficekit/source/gtk/lokdocview.cxx
f325b2
@@ -314,7 +314,7 @@ signalKey (GtkWidget* pWidget, GdkEventKey* pEvent)
f325b2
         pLOEvent->m_nKeyEvent = LOK_KEYEVENT_KEYUP;
f325b2
         pLOEvent->m_nCharCode = nCharCode;
f325b2
         pLOEvent->m_nKeyCode  = nKeyCode;
f325b2
-        g_task_set_task_data(task, pLOEvent, g_free);
f325b2
+        g_task_set_task_data(task, pLOEvent, LOEvent::destroy);
f325b2
         g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
f325b2
         g_object_unref(task);
f325b2
     }
f325b2
@@ -325,7 +325,7 @@ signalKey (GtkWidget* pWidget, GdkEventKey* pEvent)
f325b2
         pLOEvent->m_nKeyEvent = LOK_KEYEVENT_KEYINPUT;
f325b2
         pLOEvent->m_nCharCode = nCharCode;
f325b2
         pLOEvent->m_nKeyCode  = nKeyCode;
f325b2
-        g_task_set_task_data(task, pLOEvent, g_free);
f325b2
+        g_task_set_task_data(task, pLOEvent, LOEvent::destroy);
f325b2
         g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
f325b2
         g_object_unref(task);
f325b2
     }
f325b2
@@ -951,7 +951,7 @@ lok_doc_view_signal_button(GtkWidget* pWidget, GdkEventButton* pEvent)
f325b2
                 pLOEvent->m_nSetGraphicSelectionType = LOK_SETGRAPHICSELECTION_END;
f325b2
                 pLOEvent->m_nSetGraphicSelectionX = pixelToTwip(pEvent->x, priv->m_fZoom);
f325b2
                 pLOEvent->m_nSetGraphicSelectionY = pixelToTwip(pEvent->y, priv->m_fZoom);
f325b2
-                g_task_set_task_data(task, pLOEvent, g_free);
f325b2
+                g_task_set_task_data(task, pLOEvent, LOEvent::destroy);
f325b2
 
f325b2
                 g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
f325b2
                 g_object_unref(task);
f325b2
@@ -970,7 +970,7 @@ lok_doc_view_signal_button(GtkWidget* pWidget, GdkEventButton* pEvent)
f325b2
             pLOEvent->m_nSetGraphicSelectionType = LOK_SETGRAPHICSELECTION_END;
f325b2
             pLOEvent->m_nSetGraphicSelectionX = pixelToTwip(pEvent->x, priv->m_fZoom);
f325b2
             pLOEvent->m_nSetGraphicSelectionY = pixelToTwip(pEvent->y, priv->m_fZoom);
f325b2
-            g_task_set_task_data(task, pLOEvent, g_free);
f325b2
+            g_task_set_task_data(task, pLOEvent, LOEvent::destroy);
f325b2
 
f325b2
             g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
f325b2
             g_object_unref(task);
f325b2
@@ -1019,7 +1019,7 @@ lok_doc_view_signal_button(GtkWidget* pWidget, GdkEventButton* pEvent)
f325b2
                     pLOEvent->m_nSetGraphicSelectionType = LOK_SETGRAPHICSELECTION_START;
f325b2
                     pLOEvent->m_nSetGraphicSelectionX = pixelToTwip(priv->m_aGraphicHandleRects[i].x + priv->m_aGraphicHandleRects[i].width / 2, priv->m_fZoom);
f325b2
                     pLOEvent->m_nSetGraphicSelectionY = pixelToTwip(priv->m_aGraphicHandleRects[i].y + priv->m_aGraphicHandleRects[i].height / 2, priv->m_fZoom);
f325b2
-                    g_task_set_task_data(task, pLOEvent, g_free);
f325b2
+                    g_task_set_task_data(task, pLOEvent, LOEvent::destroy);
f325b2
 
f325b2
                     g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
f325b2
                     g_object_unref(task);
f325b2
@@ -1047,7 +1047,7 @@ lok_doc_view_signal_button(GtkWidget* pWidget, GdkEventButton* pEvent)
f325b2
         pLOEvent->m_nPostMouseEventX = pixelToTwip(pEvent->x, priv->m_fZoom);
f325b2
         pLOEvent->m_nPostMouseEventY = pixelToTwip(pEvent->y, priv->m_fZoom);
f325b2
         pLOEvent->m_nPostMouseEventCount = nCount;
f325b2
-        g_task_set_task_data(task, pLOEvent, g_free);
f325b2
+        g_task_set_task_data(task, pLOEvent, LOEvent::destroy);
f325b2
 
f325b2
         g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
f325b2
         g_object_unref(task);
f325b2
@@ -1065,7 +1065,7 @@ lok_doc_view_signal_button(GtkWidget* pWidget, GdkEventButton* pEvent)
f325b2
         pLOEvent->m_nPostMouseEventX = pixelToTwip(pEvent->x, priv->m_fZoom);
f325b2
         pLOEvent->m_nPostMouseEventY = pixelToTwip(pEvent->y, priv->m_fZoom);
f325b2
         pLOEvent->m_nPostMouseEventCount = nCount;
f325b2
-        g_task_set_task_data(task, pLOEvent, g_free);
f325b2
+        g_task_set_task_data(task, pLOEvent, LOEvent::destroy);
f325b2
 
f325b2
         g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
f325b2
         g_object_unref(task);
f325b2
@@ -1153,7 +1153,7 @@ lok_doc_view_signal_motion (GtkWidget* pWidget, GdkEventMotion* pEvent)
f325b2
         pLOEvent->m_nSetGraphicSelectionType = LOK_SETGRAPHICSELECTION_START;
f325b2
         pLOEvent->m_nSetGraphicSelectionX = pixelToTwip(pEvent->x, priv->m_fZoom);
f325b2
         pLOEvent->m_nSetGraphicSelectionY = pixelToTwip(pEvent->y, priv->m_fZoom);
f325b2
-        g_task_set_task_data(task, pLOEvent, g_free);
f325b2
+        g_task_set_task_data(task, pLOEvent, LOEvent::destroy);
f325b2
 
f325b2
         g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
f325b2
         g_object_unref(task);
f325b2
@@ -1169,7 +1169,7 @@ lok_doc_view_signal_motion (GtkWidget* pWidget, GdkEventMotion* pEvent)
f325b2
     pLOEvent->m_nPostMouseEventX = pixelToTwip(pEvent->x, priv->m_fZoom);
f325b2
     pLOEvent->m_nPostMouseEventY = pixelToTwip(pEvent->y, priv->m_fZoom);
f325b2
     pLOEvent->m_nPostMouseEventCount = 1;
f325b2
-    g_task_set_task_data(task, pLOEvent, g_free);
f325b2
+    g_task_set_task_data(task, pLOEvent, LOEvent::destroy);
f325b2
 
f325b2
     g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
f325b2
     g_object_unref(task);
f325b2
@@ -1891,7 +1891,7 @@ lok_doc_view_open_document (LOKDocView* pDocView,
f325b2
     pLOEvent->m_pPath = pPath;
f325b2
 
f325b2
     priv->m_aDocPath = pPath;
f325b2
-    g_task_set_task_data(task, pLOEvent, g_free);
f325b2
+    g_task_set_task_data(task, pLOEvent, LOEvent::destroy);
f325b2
 
f325b2
     g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
f325b2
     g_object_unref(task);
f325b2
@@ -1953,7 +1953,7 @@ lok_doc_view_set_part (LOKDocView* pDocView, int nPart)
f325b2
     LOEvent* pLOEvent = new LOEvent(LOK_SET_PART);
f325b2
 
f325b2
     pLOEvent->m_nPart = nPart;
f325b2
-    g_task_set_task_data(task, pLOEvent, g_free);
f325b2
+    g_task_set_task_data(task, pLOEvent, LOEvent::destroy);
f325b2
 
f325b2
     g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
f325b2
     g_object_unref(task);
f325b2
@@ -1975,7 +1975,7 @@ lok_doc_view_set_partmode(LOKDocView* pDocView,
f325b2
     GTask* task = g_task_new(pDocView, NULL, NULL, NULL);
f325b2
     LOEvent* pLOEvent = new LOEvent(LOK_SET_PARTMODE);
f325b2
     pLOEvent->m_nPartMode = nPartMode;
f325b2
-    g_task_set_task_data(task, pLOEvent, g_free);
f325b2
+    g_task_set_task_data(task, pLOEvent, LOEvent::destroy);
f325b2
 
f325b2
     g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
f325b2
     g_object_unref(task);
f325b2
@@ -1997,7 +1997,7 @@ lok_doc_view_set_edit(LOKDocView* pDocView,
f325b2
     GTask* task = g_task_new(pDocView, NULL, NULL, NULL);
f325b2
     LOEvent* pLOEvent = new LOEvent(LOK_SET_EDIT);
f325b2
     pLOEvent->m_bEdit = bEdit;
f325b2
-    g_task_set_task_data(task, pLOEvent, g_free);
f325b2
+    g_task_set_task_data(task, pLOEvent, LOEvent::destroy);
f325b2
 
f325b2
     g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
f325b2
     g_object_unref(task);
f325b2
@@ -2022,7 +2022,7 @@ lok_doc_view_post_command (LOKDocView* pDocView,
f325b2
     pLOEvent->m_pCommand = pCommand;
f325b2
     pLOEvent->m_pArguments  = g_strdup(pArguments);
f325b2
 
f325b2
-    g_task_set_task_data(task, pLOEvent, g_free);
f325b2
+    g_task_set_task_data(task, pLOEvent, LOEvent::destroy);
f325b2
     g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
f325b2
     g_object_unref(task);
f325b2
 }
f325b2
diff --git a/libreofficekit/source/gtk/tilebuffer.cxx b/libreofficekit/source/gtk/tilebuffer.cxx
f325b2
index 85f6eb0422c2..687ef44d6468 100644
f325b2
--- a/libreofficekit/source/gtk/tilebuffer.cxx
f325b2
+++ b/libreofficekit/source/gtk/tilebuffer.cxx
f325b2
@@ -73,7 +73,7 @@ void TileBuffer::setInvalid(int x, int y, float fZoom, GTask* task,
f325b2
         pLOEvent->m_nPaintTileX = x;
f325b2
         pLOEvent->m_nPaintTileY = y;
f325b2
         pLOEvent->m_fPaintTileZoom = fZoom;
f325b2
-        g_task_set_task_data(task, pLOEvent, g_free);
f325b2
+        g_task_set_task_data(task, pLOEvent, LOEvent::destroy);
f325b2
         g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL);
f325b2
     }
f325b2
 }
f325b2
@@ -89,7 +89,7 @@ Tile& TileBuffer::getTile(int x, int y, float fZoom, GTask* task,
f325b2
         pLOEvent->m_nPaintTileX = x;
f325b2
         pLOEvent->m_nPaintTileY = y;
f325b2
         pLOEvent->m_fPaintTileZoom = fZoom;
f325b2
-        g_task_set_task_data(task, pLOEvent, g_free);
f325b2
+        g_task_set_task_data(task, pLOEvent, LOEvent::destroy);
f325b2
         g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL);
f325b2
         return m_mTiles[index];
f325b2
     }
f325b2
@@ -99,7 +99,7 @@ Tile& TileBuffer::getTile(int x, int y, float fZoom, GTask* task,
f325b2
         pLOEvent->m_nPaintTileX = x;
f325b2
         pLOEvent->m_nPaintTileY = y;
f325b2
         pLOEvent->m_fPaintTileZoom = fZoom;
f325b2
-        g_task_set_task_data(task, pLOEvent, g_free);
f325b2
+        g_task_set_task_data(task, pLOEvent, LOEvent::destroy);
f325b2
         g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL);
f325b2
         return m_DummyTile;
f325b2
     }
f325b2
@@ -107,5 +107,10 @@ Tile& TileBuffer::getTile(int x, int y, float fZoom, GTask* task,
f325b2
     return m_mTiles[index];
f325b2
 }
f325b2
 
f325b2
+void LOEvent::destroy(void* pMemory)
f325b2
+{
f325b2
+    LOEvent* pLOEvent = static_cast<LOEvent*>(pMemory);
f325b2
+    delete pLOEvent;
f325b2
+}
f325b2
 
f325b2
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
f325b2
diff --git a/libreofficekit/source/gtk/tilebuffer.hxx b/libreofficekit/source/gtk/tilebuffer.hxx
f325b2
index d4e7120e6587..fdcdd15eddd7 100644
f325b2
--- a/libreofficekit/source/gtk/tilebuffer.hxx
f325b2
+++ b/libreofficekit/source/gtk/tilebuffer.hxx
f325b2
@@ -237,6 +237,9 @@ struct LOEvent
f325b2
         , m_nSetGraphicSelectionY(0)
f325b2
     {
f325b2
     }
f325b2
+
f325b2
+    /// Wrapper around delete to help GLib.
f325b2
+    static void destroy(void* pMemory);
f325b2
 };
f325b2
 
f325b2
 #endif // INCLUDED_TILEBUFFER_HXX
f325b2
-- 
f325b2
2.12.0
f325b2