summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2006-07-20 18:42:17 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2006-07-20 18:42:17 +0000
commit4e7097ff0837ce4d57c07cb0fb5faae5cd64a46d (patch)
treedeb82ad8d6b2d4a2a45a1fa1910e64f4e99a00d8
parent7014a3b5bb9a630661a66d440ca43a7ca7bba2d8 (diff)
downloadgtk+-4e7097ff0837ce4d57c07cb0fb5faae5cd64a46d.tar.gz
Fix messed up refcounting. (#348090, Chris Wilson)
2006-07-20 Matthias Clasen <mclasen@redhat.com> * gtk/gtktextlayout.c (gtk_text_layout_set_contexts): Fix messed up refcounting. (#348090, Chris Wilson)
-rw-r--r--ChangeLog3
-rw-r--r--ChangeLog.pre-2-103
-rw-r--r--gtk/gtktextlayout.c22
3 files changed, 20 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 83cd8a1303..3327f4e2d4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2006-07-20 Matthias Clasen <mclasen@redhat.com>
+ * gtk/gtktextlayout.c (gtk_text_layout_set_contexts): Fix
+ messed up refcounting. (#348090, Chris Wilson)
+
* gtk/gtkicontheme.h:
* gtk/gtkicontheme.c (_gtk_icon_theme_ensure_builtin_cache):
Export this privately.
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index 83cd8a1303..3327f4e2d4 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,5 +1,8 @@
2006-07-20 Matthias Clasen <mclasen@redhat.com>
+ * gtk/gtktextlayout.c (gtk_text_layout_set_contexts): Fix
+ messed up refcounting. (#348090, Chris Wilson)
+
* gtk/gtkicontheme.h:
* gtk/gtkicontheme.c (_gtk_icon_theme_ensure_builtin_cache):
Export this privately.
diff --git a/gtk/gtktextlayout.c b/gtk/gtktextlayout.c
index 42c3b83ee0..5f62e70304 100644
--- a/gtk/gtktextlayout.c
+++ b/gtk/gtktextlayout.c
@@ -369,17 +369,23 @@ gtk_text_layout_set_contexts (GtkTextLayout *layout,
{
g_return_if_fail (GTK_IS_TEXT_LAYOUT (layout));
- if (layout->ltr_context)
- g_object_unref (ltr_context);
+ if (layout->ltr_context != ltr_context)
+ {
+ if (layout->ltr_context)
+ g_object_unref (layout->ltr_context);
- layout->ltr_context = ltr_context;
- g_object_ref (ltr_context);
+ layout->ltr_context = ltr_context;
+ g_object_ref (layout->ltr_context);
+ }
- if (layout->rtl_context)
- g_object_unref (rtl_context);
+ if (layout->rtl_context != rtl_context)
+ {
+ if (layout->rtl_context)
+ g_object_unref (layout->rtl_context);
- layout->rtl_context = rtl_context;
- g_object_ref (rtl_context);
+ layout->rtl_context = rtl_context;
+ g_object_ref (layout->rtl_context);
+ }
DV (g_print ("invalidating all due to new pango contexts (%s)\n", G_STRLOC));
gtk_text_layout_invalidate_all (layout);