From 480d4e70b53487da92a4add51395b4068f2e73c0 Mon Sep 17 00:00:00 2001 From: Pranav Kant Date: Sun, 10 Jan 2016 22:50:46 +0530 Subject: [PATCH 384/398] lokdocview: Use shared_ptr to fix a possible memory leak Possible because boost::property_tree can throw an exception. Change-Id: I68394ce3b30d448d40d8e22555bafdff1ffa6092 Reviewed-on: https://gerrit.libreoffice.org/21309 Reviewed-by: David Tardon Tested-by: David Tardon (cherry picked from commit 02b49890d51ec463d32846f1108344159664a9eb) Reviewed-on: https://gerrit.libreoffice.org/21345 Tested-by: Jenkins Reviewed-by: Michael Stahl (cherry picked from commit 1673606de9a520e615e1a32da94f28d55ebaea20) --- libreofficekit/source/gtk/lokdocview.cxx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx index 5cf44e98c796..b6febbd9fe66 100644 --- a/libreofficekit/source/gtk/lokdocview.cxx +++ b/libreofficekit/source/gtk/lokdocview.cxx @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -344,13 +345,12 @@ doSearch(LOKDocView* pDocView, const char* pText, bool bBackwards, bool highligh boost::property_tree::ptree aTree; GtkWidget* drawingWidget = GTK_WIDGET(pDocView); GdkWindow* drawingWindow = gtk_widget_get_window(drawingWidget); - cairo_region_t* cairoVisRegion = gdk_window_get_visible_region(drawingWindow); + std::shared_ptr cairoVisRegion( gdk_window_get_visible_region(drawingWindow), + cairo_region_destroy); cairo_rectangle_int_t cairoVisRect; - int x, y; - - cairo_region_get_rectangle(cairoVisRegion, 0, &cairoVisRect); - x = pixelToTwip (cairoVisRect.x, priv->m_fZoom); - y = pixelToTwip (cairoVisRect.y, priv->m_fZoom); + cairo_region_get_rectangle(cairoVisRegion.get(), 0, &cairoVisRect); + int x = pixelToTwip (cairoVisRect.x, priv->m_fZoom); + int y = pixelToTwip (cairoVisRect.y, priv->m_fZoom); aTree.put(boost::property_tree::ptree::path_type("SearchItem.SearchString/type", '/'), "string"); aTree.put(boost::property_tree::ptree::path_type("SearchItem.SearchString/value", '/'), pText); -- 2.12.0