summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustavo J. A. M. Carneiro <gjc@src.gnome.org>2005-11-09 19:45:19 +0000
committerGustavo J. A. M. Carneiro <gjc@src.gnome.org>2005-11-09 19:45:19 +0000
commit7f6685b72ee22b1b7a14371734978959ad14e7f8 (patch)
treea1bf121a3c64d393d5737e0ec75d724712998820
parent55d03f1c08d4f7624732fab642b4c25a0e76e9d3 (diff)
downloadpygobject-7f6685b72ee22b1b7a14371734978959ad14e7f8.tar.gz
pygobject-7f6685b72ee22b1b7a14371734978959ad14e7f8.tar.xz
pygobject-7f6685b72ee22b1b7a14371734978959ad14e7f8.zip
plug leak; add glade test; fix warning message
-rw-r--r--gobject/pygobject-private.h6
-rw-r--r--gobject/pygobject.c4
-rw-r--r--tests/Makefile.am1
-rw-r--r--tests/test_glade.py33
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()