diff options
author | Gian Mario Tagliaretti <gianmt@src.gnome.org> | 2009-02-08 19:18:48 +0000 |
---|---|---|
committer | Gian Mario Tagliaretti <gianmt@src.gnome.org> | 2009-02-08 19:18:48 +0000 |
commit | 8392f3d238484832a5d73a4602aad31f83a08f62 (patch) | |
tree | 15e34d4e120b98d05216b2fab501c30bb50ac190 /gio/gfile.override | |
parent | 951050a809d4368ed6fba283feffca0e7f6d8607 (diff) | |
download | pygobject-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.override | 29 |
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; } |