Blame SOURCES/0001-Fix-leaks-of-Pango-objects.patch

6f95a8
From eca72baa5616fbe4dbebea43c7e5940847dc5ab8 Mon Sep 17 00:00:00 2001
6f95a8
From: "Owen W. Taylor" <otaylor@fishsoup.net>
6f95a8
Date: Tue, 27 Sep 2011 00:17:52 -0400
6f95a8
Subject: [PATCH 1/2] Fix leaks of Pango objects
6f95a8
6f95a8
Gtk.PrintContext.create_pango_context()
6f95a8
Gtk.PrintContext.create_pango_layout()
6f95a8
pangocairo.CairoContext.create_layout()
6f95a8
6f95a8
were leaking the objects they returned.
6f95a8
6f95a8
https://bugzilla.gnome.org/show_bug.cgi?id=660216
6f95a8
---
6f95a8
 gtk/gtk-2.10.defs   |  2 ++
6f95a8
 pangocairo.override | 11 ++++++++---
6f95a8
 2 files changed, 10 insertions(+), 3 deletions(-)
6f95a8
6f95a8
diff --git a/gtk/gtk-2.10.defs b/gtk/gtk-2.10.defs
6f95a8
index 69c7e0c..faa45e1 100644
6f95a8
--- a/gtk/gtk-2.10.defs
6f95a8
+++ b/gtk/gtk-2.10.defs
6f95a8
@@ -1388,12 +1388,14 @@
6f95a8
 (define-method create_pango_context
6f95a8
   (of-object "GtkPrintContext")
6f95a8
   (c-name "gtk_print_context_create_pango_context")
6f95a8
+  (caller-owns-return #t)
6f95a8
   (return-type "PangoContext*")
6f95a8
 )
6f95a8
 
6f95a8
 (define-method create_pango_layout
6f95a8
   (of-object "GtkPrintContext")
6f95a8
   (c-name "gtk_print_context_create_pango_layout")
6f95a8
+  (caller-owns-return #t)
6f95a8
   (return-type "PangoLayout*")
6f95a8
 )
6f95a8
 
6f95a8
diff --git a/pangocairo.override b/pangocairo.override
6f95a8
index bb923e6..5101107 100644
6f95a8
--- a/pangocairo.override
6f95a8
+++ b/pangocairo.override
6f95a8
@@ -118,11 +118,16 @@ _wrap_pango_cairo_update_context(PyGObject *self, PyObject *args, PyObject *kwar
6f95a8
 static PyObject *
6f95a8
 _wrap_pango_cairo_create_layout(PyGObject *self)
6f95a8
 {
6f95a8
-    PangoLayout *ret;
6f95a8
+    PangoLayout *layout;
6f95a8
+    PyObject *ret;
6f95a8
 
6f95a8
-    ret = pango_cairo_create_layout(PycairoContext_GET(self));
6f95a8
+    layout = pango_cairo_create_layout(PycairoContext_GET(self));
6f95a8
     /* pygobject_new handles NULL checking */
6f95a8
-    return pygobject_new((GObject *)ret);
6f95a8
+    ret = pygobject_new((GObject *)layout);
6f95a8
+    if (layout)
6f95a8
+	g_object_unref(layout);
6f95a8
+
6f95a8
+    return ret;
6f95a8
 }
6f95a8
 
6f95a8
 static PyObject *
6f95a8
-- 
6f95a8
2.5.5
6f95a8