summaryrefslogtreecommitdiff
path: root/pango
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@gnome.org>2008-11-28 17:34:57 +0000
committerBehdad Esfahbod <behdad@src.gnome.org>2008-11-28 17:34:57 +0000
commit74cc07c44afd2879418389cce57a4129b60d61e6 (patch)
tree0183a27ad517826d064115cf76ba62a0b54033f4 /pango
parent0a189cf8c9d4489a30bc1a5f0f4ce62bcc8c9a5d (diff)
downloadpango-74cc07c44afd2879418389cce57a4129b60d61e6.tar.gz
Bug 562574 – Pangocariowin32 is leaking every cairo font it ever creates
2008-11-28 Behdad Esfahbod <behdad@gnome.org> Bug 562574 – Pangocariowin32 is leaking every cairo font it ever creates * pango/pangocairo-atsuifont.c (pango_cairo_atsui_font_finalize): * pango/pangocairo-win32font.c (pango_cairo_win32_font_finalize): Finalize shared pangocairo font resources. Oops! * pango/pangocairo-font.c (_pango_cairo_font_private_finalize): Protect against multiple calls to finalize. This is practiced by the pangocairo-fcfont when a font is shutdown and then finalized. svn path=/trunk/; revision=2746
Diffstat (limited to 'pango')
-rw-r--r--pango/pangocairo-atsuifont.c6
-rw-r--r--pango/pangocairo-fcfont.c4
-rw-r--r--pango/pangocairo-font.c4
-rw-r--r--pango/pangocairo-win32font.c6
4 files changed, 16 insertions, 4 deletions
diff --git a/pango/pangocairo-atsuifont.c b/pango/pangocairo-atsuifont.c
index 3a08df62..7706fbf8 100644
--- a/pango/pangocairo-atsuifont.c
+++ b/pango/pangocairo-atsuifont.c
@@ -174,6 +174,10 @@ pango_cairo_atsui_font_describe_absolute (PangoFont *font)
static void
pango_cairo_atsui_font_finalize (GObject *object)
{
+ PangoCairoATSUIFont *cafont = (PangoCairoATSUIFont *) object;
+
+ _pango_cairo_font_private_finalize (&cafont->cf_priv);
+
G_OBJECT_CLASS (pango_cairo_atsui_font_parent_class)->finalize (object);
}
@@ -191,7 +195,7 @@ pango_cairo_atsui_font_class_init (PangoCairoATSUIFontClass *class)
}
static void
-pango_cairo_atsui_font_init (PangoCairoATSUIFont *cafont)
+pango_cairo_atsui_font_init (PangoCairoATSUIFont *cafont G_GNUC_UNUSED)
{
}
diff --git a/pango/pangocairo-fcfont.c b/pango/pangocairo-fcfont.c
index fb519b79..7cab98f3 100644
--- a/pango/pangocairo-fcfont.c
+++ b/pango/pangocairo-fcfont.c
@@ -88,7 +88,7 @@ G_DEFINE_TYPE_WITH_CODE (PangoCairoFcFont, pango_cairo_fc_font, PANGO_TYPE_FC_FO
static void
pango_cairo_fc_font_finalize (GObject *object)
{
- PangoCairoFcFont *cffont = (PangoCairoFcFont *) (object);
+ PangoCairoFcFont *cffont = (PangoCairoFcFont *) object;
_pango_cairo_font_private_finalize (&cffont->cf_priv);
@@ -162,7 +162,7 @@ pango_cairo_fc_font_class_init (PangoCairoFcFontClass *class)
}
static void
-pango_cairo_fc_font_init (PangoCairoFcFont *cffont)
+pango_cairo_fc_font_init (PangoCairoFcFont *cffont G_GNUC_UNUSED)
{
}
diff --git a/pango/pangocairo-font.c b/pango/pangocairo-font.c
index 15757eee..11cb267b 100644
--- a/pango/pangocairo-font.c
+++ b/pango/pangocairo-font.c
@@ -560,14 +560,18 @@ _pango_cairo_font_private_finalize (PangoCairoFontPrivate *cf_priv)
if (cf_priv->scaled_font)
cairo_scaled_font_destroy (cf_priv->scaled_font);
+ cf_priv->scaled_font = NULL;
_pango_cairo_font_hex_box_info_destroy (cf_priv->hbi);
+ cf_priv->hbi = NULL;
if (cf_priv->glyph_extents_cache)
g_free (cf_priv->glyph_extents_cache);
+ cf_priv->glyph_extents_cache = NULL;
g_slist_foreach (cf_priv->metrics_by_lang, (GFunc)free_metrics_info, NULL);
g_slist_free (cf_priv->metrics_by_lang);
+ cf_priv->metrics_by_lang = NULL;
}
gboolean
diff --git a/pango/pangocairo-win32font.c b/pango/pangocairo-win32font.c
index 4f0ec3d7..875f9526 100644
--- a/pango/pangocairo-win32font.c
+++ b/pango/pangocairo-win32font.c
@@ -164,6 +164,10 @@ pango_cairo_win32_font_create_metrics_for_context (PangoCairoFont *font,
static void
pango_cairo_win32_font_finalize (GObject *object)
{
+ PangoCairoWin32Font *cwfont = (PangoCairoWin32Font *) object;
+
+ _pango_cairo_font_private_finalize (&cwfont->cf_priv);
+
G_OBJECT_CLASS (pango_cairo_win32_font_parent_class)->finalize (object);
}
@@ -225,7 +229,7 @@ pango_cairo_win32_font_class_init (PangoCairoWin32FontClass *class)
}
static void
-pango_cairo_win32_font_init (PangoCairoWin32Font *cwfont)
+pango_cairo_win32_font_init (PangoCairoWin32Font *cwfont G_GNUC_UNUSED)
{
}