commit 42970db5949c615078c38a039da4745eeb194ac1 Author: Ignacio Casal Quinteiro Date: Fri Jun 10 14:01:32 2011 +0200 closure: avoid double free crash gi/pygi-closure.c | 12 ++++-------- 1 files changed, 4 insertions(+), 8 deletions(-) commit 78366697d8f7fc53f20d9f52f9f39552c5e99bd1 Author: John (J5) Palmieri Date: Fri Jun 10 16:48:28 2011 -0400 [gi] backport of "GVariant has a GType" fe386a * backport the switch to using GIInterfaceInfo instead of GITypeInfo for foreign types to support this patch - 01596a gi/pygi-argument.c | 10 +++++----- gi/pygi-foreign-cairo.c | 18 ++++++++++-------- gi/pygi-foreign-gvariant.c | 15 +++++++-------- gi/pygi-foreign-gvariant.h | 14 ++++++-------- gi/pygi-foreign.c | 21 +++++++++------------ gi/pygi-foreign.h | 16 ++++++++-------- gi/pygi-invoke.c | 26 ++++++++++++++++---------- 7 files changed, 61 insertions(+), 59 deletions(-) commit 0c348da3d974f63629c44e75067b8056dacc60d3 Author: John (J5) Palmieri Date: Fri Jun 10 16:46:20 2011 -0400 [gi] fixes to backport commit 6b5a65 - in older glib GVariants are still structs gi/gimodule.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) commit 6b5a656a3b77438c9bbb897c65343634b981c0e5 Author: Tomeu Vizoso Date: Mon Jun 6 19:05:07 2011 +0200 GVariantType is a boxed struct https://bugzilla.gnome.org/show_bug.cgi?id=647509 gi/gimodule.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 3f6bba909486d0ad1a27592fcf09c7ac8744fded Author: Tomeu Vizoso Date: Mon Jun 6 17:38:21 2011 +0200 Use _gi.Struct to wrap fundamentals https://bugzilla.gnome.org/show_bug.cgi?id=647509 gi/module.py | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit b7f5ce021bf16a422dc410b3ff44303e0757dc6e Author: Jason Siefken Date: Fri Jun 3 23:11:17 2011 -0700 Added __eq__ method for Gdk.Color and Gdk.RGBA Call Gdk.Color.equal and Gdk.RGBA.equal when == equality testing is used. gi/overrides/Gdk.py | 6 ++++++ tests/test_overrides.py | 4 ++++ 2 files changed, 10 insertions(+), 0 deletions(-) commit c016c27f545f398f1b57cf31f37392c97d2b5e50 Author: Ignacio Casal Quinteiro Date: Wed Jun 8 19:21:23 2011 +0200 Remove useless import tests/test_everything.py | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit 1598047c0ddd6a1d04d41e59dd182f3c0524f3c4 Author: Ignacio Casal Quinteiro Date: Wed Jun 8 19:18:23 2011 +0200 Revert "[gi] Removed hack to avoid using GLib.Variant.new_variant." This reverts commit dfe95b9ec598b57deaabd98ab488ab054a44ec09. gi/overrides/GLib.py | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletions(-) commit ae9e098c14de3d2364c8b16c862aa77570c06a4a Author: Ignacio Casal Quinteiro Date: Wed Jun 8 19:13:48 2011 +0200 closure: Check the out arg is not null. Fixes bug #651812 gi/pygi-closure.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit eca590a3ff6bbfb78eef7b88d36cee59eb51b1d0 Author: Daniel Drake Date: Fri Jun 3 16:59:15 2011 +0100 Fix GC-related crash during PyGObject deallocation Python-2.7.1's GC source has the following comment: /* Python's cyclic gc should never see an incoming refcount * of 0: if something decref'ed to 0, it should have been * deallocated immediately at that time. * Possible cause (if the assert triggers): a tp_dealloc * routine left a gc-aware object tracked during its teardown * phase, and did something-- or allowed something to happen -- * that called back into Python. gc can trigger then, and may * see the still-tracked dying object. Before this assert * was added, such mistakes went on to allow gc to try to * delete the object again. In a debug build, that caused * a mysterious segfault, when _Py_ForgetReference tried * to remove the object from the doubly-linked list of all * objects a second time. In a release build, an actual * double deallocation occurred, which leads to corruption * of the allocator's internal bookkeeping pointers. That's * so serious that maybe this should be a release-build * check instead of an assert? */ As shown in a backtrace at https://bugzilla.redhat.com/show_bug.cgi?id=640972 , pygobject is making this exact mistake. Before untracking its object, pygobject_dealloc calls PyObject_ClearWeakRefs() which can call back into python, create new allocations, and trigger the GC. This is causing Sugar (based on pygobject2 + pygtk2 static bindings) to crash on a regular basis while interacting with widgets or launching applications. Fix this by untracking the object early. Also fix the same issue spotted in the GSource wrapper. Thanks to Bernie Innocenti for initial diagnosis. glib/pygsource.c | 6 ++++-- gobject/pygobject.c | 8 +++++++- 2 files changed, 11 insertions(+), 3 deletions(-) commit ad96a3f1d187a640ec0a463b766fd5e027f3c16a Author: Martin Pitt Date: Mon May 2 15:49:52 2011 +0200 Fix symbol names to be locale independent We currently use upper() to present enum values, which are usually defined in lower case in the typelib, in upper cases. However, upper() is locale dependent, so that e. g. in tr_TR.UTF-8, "invalid" becomes "iNVALiD" because Turkish has some extra variants of "i". Use a local ASCII-only translate() call instead to avoid this. Thanks to Nils Philippsen for the idea! This also adds a test locale "te_ST@nouppera" which defines toupper('a') == 'a'. Run the Enum tests under this locale to reproduce the bug and verify the fix. https://bugzilla.gnome.org/show_bug.cgi?id=649165 gi/module.py | 9 ++++++++- tests/te_ST@nouppera | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/test_gi.py | 30 ++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+), 1 deletions(-) commit 90530b52f6eaa30bb704e413c01bb94ee511a0bb Author: Sebastian Pölsterl Date: Mon Apr 18 18:36:25 2011 +0200 Updated DOAP file pygobject.doap | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) commit 996e5676a00e8d8fc55ef7400d15ccf5a4d904eb Author: Sebastian Pölsterl Date: Mon Apr 18 18:16:42 2011 +0200 Post release version bump to 2.28.5 configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)