diff options
| author | Simon Feltman <sfeltman@src.gnome.org> | 2012-11-11 22:26:19 -0800 |
|---|---|---|
| committer | Simon Feltman <sfeltman@src.gnome.org> | 2012-11-11 23:11:38 -0800 |
| commit | df589458358d7e7bf178dff4e6ad937a70f806e3 (patch) | |
| tree | 1c677242eb66f1155714ab85f0109ddd4b062172 /gi/pygi-boxed.c | |
| parent | c01c95b9fb3d726385efac945f6d1270ae65d109 (diff) | |
| download | pygobject-df589458358d7e7bf178dff4e6ad937a70f806e3.tar.gz | |
Fix leaks with GValues holding boxed and object types
Expose read access to PyGIBoxed.free_on_dealloc.
Add GObject.Value.__del__ override and call unset() to
correctly free reference counts.
https://bugzilla.gnome.org/show_bug.cgi?id=688137
Diffstat (limited to 'gi/pygi-boxed.c')
| -rw-r--r-- | gi/pygi-boxed.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gi/pygi-boxed.c b/gi/pygi-boxed.c index 2fd446c5..ff3db9b1 100644 --- a/gi/pygi-boxed.c +++ b/gi/pygi-boxed.c @@ -165,6 +165,17 @@ _pygi_boxed_new (PyTypeObject *type, return (PyObject *) self; } +static PyObject * +_pygi_boxed_get_free_on_dealloc(PyGIBoxed *self, void *closure) +{ + return PyBool_FromLong( ((PyGBoxed *)self)->free_on_dealloc ); +} + +static PyGetSetDef pygi_boxed_getsets[] = { + { "_free_on_dealloc", (getter)_pygi_boxed_get_free_on_dealloc, (setter)0 }, + { NULL, 0, 0 } +}; + void _pygi_boxed_register_types (PyObject *m) { @@ -174,6 +185,7 @@ _pygi_boxed_register_types (PyObject *m) PyGIBoxed_Type.tp_init = (initproc) _boxed_init; PyGIBoxed_Type.tp_dealloc = (destructor) _boxed_dealloc; PyGIBoxed_Type.tp_flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE); + PyGIBoxed_Type.tp_getset = pygi_boxed_getsets; if (PyType_Ready (&PyGIBoxed_Type)) return; |
