diff options
author | Christophe Fergeau <cfergeau@redhat.com> | 2014-10-23 21:13:29 +0200 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2014-10-26 21:53:33 -0400 |
commit | 506d59f52666bd0f43ff950e46dd0b196e07f729 (patch) | |
tree | e9aa98cbe4266373aa8b2ccf89f3593d0dd3cab3 /gtk/gtkfontchooserwidget.c | |
parent | 77487fef2f14d199611264d28c14eba081b31b36 (diff) | |
download | gtk+-506d59f52666bd0f43ff950e46dd0b196e07f729.tar.gz |
Return correct font from gtk_font_chooser_widget_find_font
Commit 30a1c4ab fixed several memleaks including one in
gtk_font_chooser_widget_find_font.
However, the fix causes one extra call to gtk_tree_model_iter_next()
after finding the font we look for (ie pango_font_description_equal
returns TRUE): the 'increment' part of the for loop
(gtk_tree_model_iter_next) is run before the 'exit condition' of the for
loop is evaluated.
This commit reverts this part of commit 30a1c4ab and adds an extra
call to pango_font_description_free in order to fix the leak.
https://bugzilla.gnome.org/show_bug.cgi?id=739111
Diffstat (limited to 'gtk/gtkfontchooserwidget.c')
-rw-r--r-- | gtk/gtkfontchooserwidget.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/gtk/gtkfontchooserwidget.c b/gtk/gtkfontchooserwidget.c index f2865b528d..5fc82b264a 100644 --- a/gtk/gtkfontchooserwidget.c +++ b/gtk/gtkfontchooserwidget.c @@ -897,18 +897,18 @@ gtk_font_chooser_widget_find_font (GtkFontChooserWidget *fontchooser, GtkTreeIter *iter) { GtkFontChooserWidgetPrivate *priv = fontchooser->priv; - PangoFontDescription *desc; - PangoFontFamily *family; - gboolean valid, found; + gboolean valid; if (pango_font_description_get_family (font_desc) == NULL) return FALSE; - found = FALSE; for (valid = gtk_tree_model_get_iter_first (priv->model, iter); - valid && !found; + valid; valid = gtk_tree_model_iter_next (priv->model, iter)) { + PangoFontDescription *desc; + PangoFontFamily *family; + gtk_tree_model_get (priv->model, iter, FAMILY_COLUMN, &family, -1); @@ -920,13 +920,15 @@ gtk_font_chooser_widget_find_font (GtkFontChooserWidget *fontchooser, desc = tree_model_get_font_description (priv->model, iter); pango_font_description_merge_static (desc, font_desc, FALSE); - if (pango_font_description_equal (desc, font_desc)) - found = TRUE; + if (pango_font_description_equal (desc, font_desc)) { + pango_font_description_free (desc); + break; + } pango_font_description_free (desc); } - return found; + return valid; } static void |