diff options
author | Gustavo J. A. M. Carneiro <gjc@src.gnome.org> | 2005-11-09 19:45:19 +0000 |
---|---|---|
committer | Gustavo J. A. M. Carneiro <gjc@src.gnome.org> | 2005-11-09 19:45:19 +0000 |
commit | 7f6685b72ee22b1b7a14371734978959ad14e7f8 (patch) | |
tree | a1bf121a3c64d393d5737e0ec75d724712998820 | |
parent | 55d03f1c08d4f7624732fab642b4c25a0e76e9d3 (diff) | |
download | pygobject-7f6685b72ee22b1b7a14371734978959ad14e7f8.tar.gz pygobject-7f6685b72ee22b1b7a14371734978959ad14e7f8.tar.xz pygobject-7f6685b72ee22b1b7a14371734978959ad14e7f8.zip |
plug leak; add glade test; fix warning message
-rw-r--r-- | gobject/pygobject-private.h | 6 | ||||
-rw-r--r-- | gobject/pygobject.c | 4 | ||||
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rw-r--r-- | tests/test_glade.py | 33 |
4 files changed, 39 insertions, 5 deletions
diff --git a/gobject/pygobject-private.h b/gobject/pygobject-private.h index 69a940f..84d01b4 100644 --- a/gobject/pygobject-private.h +++ b/gobject/pygobject-private.h @@ -22,10 +22,10 @@ extern struct _PyGObject_Functions pygobject_api_functions; #define pyg_threads_enabled (pygobject_api_functions.threads_enabled) -#define pyg_gil_state_ensure() (pygobject_api_functions.threads_enabled? (pygobject_api_functions.gil_state_ensure()) : 0) +#define pyg_gil_state_ensure() (pygobject_api_functions.threads_enabled? (PyGILState_Ensure()) : 0) #define pyg_gil_state_release(state) G_STMT_START { \ - if (pygobject_api_functions.threads_enabled) \ - pygobject_api_functions.gil_state_release(state); \ + if (pygobject_api_functions.threads_enabled) \ + PyGILState_Release(state); \ } G_STMT_END #define pyg_begin_allow_threads \ diff --git a/gobject/pygobject.c b/gobject/pygobject.c index da2e610..9efa376 100644 --- a/gobject/pygobject.c +++ b/gobject/pygobject.c @@ -1005,8 +1005,8 @@ pygobject__gobject_init__(PyGObject *self, PyObject *args, PyObject *kwargs) #define CHECK_GOBJECT(self) \ if (!G_IS_OBJECT(self->obj)) { \ PyErr_Format(PyExc_TypeError, \ - "object at 0x%x of type %s is not initialized", \ - (int)self, self->ob_type->tp_name); \ + "object at %p of type %s is not initialized", \ + self, self->ob_type->tp_name); \ return NULL; \ } diff --git a/tests/Makefile.am b/tests/Makefile.am index 86d97c4..15ee4f0 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -19,6 +19,7 @@ testhelper_la_SOURCES = \ test-unknown.c tests = \ + test_glade.py \ test_conversion.py \ test_dialog.py \ test_enum.py \ diff --git a/tests/test_glade.py b/tests/test_glade.py new file mode 100644 index 0000000..ce9b99e --- /dev/null +++ b/tests/test_glade.py @@ -0,0 +1,33 @@ +import unittest + +from common import gtk, gobject +import weakref +import gc + +class TestGlade(unittest.TestCase): + + class SimpleTest: + def __init__(self, test): + xml = gtk.glade.XML('leak.glade') + xml.signal_autoconnect(self) + self.test = test + self.window = xml.get_widget("window1") + self.window.destroy() + def on_window1_destroy(self, window): + gobject.idle_add(self.test.leak_check, weakref.ref(self), weakref.ref(self.window)) + + def leak_check(self, objref, windowref): + while gc.collect(): + pass + gtk.main_quit() + self.assertEqual(objref(), None) + self.windowref = windowref + + def testAutoconnectLeak(self): + self.SimpleTest(self) + gtk.main() + self.assertEqual(self.windowref(), None) + + +if __name__ == '__main__': + unittest.main() |