[pygobject/gsoc2009: 106/160] Refactor _wrap_g_irepository_get_namespaces



commit 21f883dfa6c2d69b34778fb8612cfbd03262b81e
Author: Simon van der Linden <svdlinden src gnome org>
Date:   Mon Aug 3 23:17:44 2009 +0200

    Refactor _wrap_g_irepository_get_namespaces

 gi/pygirepository.c |   28 ++++++++++++++++++++--------
 1 files changed, 20 insertions(+), 8 deletions(-)
---
diff --git a/gi/pygirepository.c b/gi/pygirepository.c
index da71640..ed490e8 100644
--- a/gi/pygirepository.c
+++ b/gi/pygirepository.c
@@ -139,21 +139,33 @@ _wrap_g_irepository_find_by_name(PyGIRepository *self, PyObject *args, PyObject
 static PyObject *
 _wrap_g_irepository_get_namespaces(PyGIRepository *self)
 {
-    char ** namespaces;
-    int i, length;
-    PyObject *retval;
+    char **namespaces;
+    gsize n_namespaces;
+    gsize i;
+    PyObject *py_namespaces;
 
     namespaces = g_irepository_get_loaded_namespaces(self->repository);
 
-    length = g_strv_length(namespaces);
-    retval = PyTuple_New(length);
+    n_namespaces = g_strv_length(namespaces);
+    py_namespaces = PyTuple_New(n_namespaces);
+    if (py_namespaces == NULL) {
+        goto return_;
+    }
 
-    for (i = 0; i < length; i++)
-	PyTuple_SetItem(retval, i, PyString_FromString(namespaces[i]));
+    for (i = 0; i < n_namespaces; i++) {
+        PyObject *namespace_;
+        namespace_ = PyString_FromString(namespaces[i]);
+        if (namespace_ == NULL) {
+            Py_CLEAR(py_namespaces);
+            break;
+        }
+	    PyTuple_SET_ITEM(py_namespaces, i, namespace_);
+    }
 
+return_:
     g_strfreev (namespaces);
 
-    return retval;
+    return py_namespaces;
 }
 
 static PyObject *



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]