summaryrefslogtreecommitdiffstats
path: root/gio/gfile.override
diff options
context:
space:
mode:
authorGian Mario Tagliaretti <gianmt@src.gnome.org>2009-02-08 19:18:48 +0000
committerGian Mario Tagliaretti <gianmt@src.gnome.org>2009-02-08 19:18:48 +0000
commit8392f3d238484832a5d73a4602aad31f83a08f62 (patch)
tree15e34d4e120b98d05216b2fab501c30bb50ac190 /gio/gfile.override
parent951050a809d4368ed6fba283feffca0e7f6d8607 (diff)
downloadpygobject-8392f3d238484832a5d73a4602aad31f83a08f62.tar.gz
pygobject-8392f3d238484832a5d73a4602aad31f83a08f62.tar.xz
pygobject-8392f3d238484832a5d73a4602aad31f83a08f62.zip
huge patch to fix memory leaks all over the place, fixes #568427
svn path=/trunk/; revision=1002
Diffstat (limited to 'gio/gfile.override')
-rw-r--r--gio/gfile.override29
1 files changed, 22 insertions, 7 deletions
diff --git a/gio/gfile.override b/gio/gfile.override
index f4dc152..1dc566c 100644
--- a/gio/gfile.override
+++ b/gio/gfile.override
@@ -75,6 +75,7 @@ _wrap__file_init(PyGObject *self, PyObject *args, PyObject *kwargs)
GFile *file;
Py_ssize_t n_args, n_kwargs;
char *arg;
+ PyObject *py_ret;
n_args = PyTuple_Size(args);
n_kwargs = kwargs != NULL ? PyDict_Size(kwargs) : 0;
@@ -114,7 +115,11 @@ _wrap__file_init(PyGObject *self, PyObject *args, PyObject *kwargs)
"could not create GFile object");
return NULL;
}
- return pygobject_new((GObject *)file);
+
+ py_ret = pygobject_new((GObject *)file);
+ g_object_unref(file);
+
+ return py_ret;
}
%%
override g_file_read_async kwargs
@@ -192,9 +197,14 @@ _wrap_g_file_load_contents(PyGObject *self,
if (pyg_error_check(&error))
return NULL;
- if (ret)
- return Py_BuildValue("(s#ks)", contents, length, length, etag_out);
- else {
+ if (ret) {
+ PyObject *pyret;
+
+ pyret = Py_BuildValue("(s#ks)", contents, length, length, etag_out);
+ g_free(contents);
+ g_free(etag_out);
+ return pyret;
+ } else {
Py_INCREF(Py_None);
return Py_None;
}
@@ -269,9 +279,14 @@ _wrap_g_file_load_contents_finish(PyGObject *self,
if (pyg_error_check(&error))
return NULL;
- if (ret)
- return Py_BuildValue("(s#ks)", contents, length, length, etag_out);
- else {
+ if (ret) {
+ PyObject *pyret;
+
+ pyret = Py_BuildValue("(s#ks)", contents, length, length, etag_out);
+ g_free(contents);
+ g_free(etag_out);
+ return pyret;
+ } else {
Py_INCREF(Py_None);
return Py_None;
}