diff options
author | Koen Kooi <koen@openembedded.org> | 2009-10-02 16:50:18 +0200 |
---|---|---|
committer | Koen Kooi <koen@openembedded.org> | 2009-10-02 16:50:41 +0200 |
commit | 77e13af5e317d5950d647f7e7ce002d651ff947a (patch) | |
tree | 280d308f63a839f9ac0a14cc61f105632302187f /recipes/glib-2.0/bug-556515.patch | |
parent | 80891610ead222418a20a358b7bdb892fa676546 (diff) | |
download | openembedded-77e13af5e317d5950d647f7e7ce002d651ff947a.tar.gz |
glib-2.0: update to 2.22.1
Diffstat (limited to 'recipes/glib-2.0/bug-556515.patch')
-rw-r--r-- | recipes/glib-2.0/bug-556515.patch | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/recipes/glib-2.0/bug-556515.patch b/recipes/glib-2.0/bug-556515.patch new file mode 100644 index 0000000000..0af15a6f8f --- /dev/null +++ b/recipes/glib-2.0/bug-556515.patch @@ -0,0 +1,35 @@ +https://bugzilla.gnome.org/show_bug.cgi?id=556515 - g_object_unref race condition + + +diff --git /tmp/gobject.c glib-2.21.6/gobject/gobject.c +index 454d8c2..75f479c 100644 +--- /tmp/gobject.c ++++ glib-2.21.6/gobject/gobject.c +@@ -2380,11 +2380,12 @@ g_object_unref (gpointer _object) + old_ref = g_atomic_int_get (&object->ref_count); + if (old_ref > 1) + { ++ gboolean do_toggle_ref_notify = (old_ref == 2 && OBJECT_HAS_TOGGLE_REF (object)); + if (!g_atomic_int_compare_and_exchange ((int *)&object->ref_count, old_ref, old_ref - 1)) + goto retry_atomic_decrement1; + + /* if we went from 2->1 we need to notify toggle refs if any */ +- if (old_ref == 2 && OBJECT_HAS_TOGGLE_REF (object)) ++ if (do_toggle_ref_notify) + toggle_refs_notify (object, TRUE); + } + else +@@ -2397,11 +2398,12 @@ g_object_unref (gpointer _object) + old_ref = g_atomic_int_get ((int *)&object->ref_count); + if (old_ref > 1) + { ++ gboolean do_toggle_ref_notify = (old_ref == 2 && OBJECT_HAS_TOGGLE_REF (object)); + if (!g_atomic_int_compare_and_exchange ((int *)&object->ref_count, old_ref, old_ref - 1)) + goto retry_atomic_decrement2; + + /* if we went from 2->1 we need to notify toggle refs if any */ +- if (old_ref == 2 && OBJECT_HAS_TOGGLE_REF (object)) ++ if (do_toggle_ref_notify) + toggle_refs_notify (object, TRUE); + + return; |