diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2021-01-01 23:20:42 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2021-01-01 23:20:42 (GMT) |
commit | dcd5e0b104143b110997029aa0728731f4087ad8 (patch) | |
tree | 141a79ade5eae6e469ba9e5255882039e9c29a3e /plugins | |
parent | 7b320516abf871eefe009ff6fe4fb86ed921fed9 (diff) |
Managed GObject references each time a configuration parameter is accessed.
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/pychrysalide/glibext/configuration.c | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/plugins/pychrysalide/glibext/configuration.c b/plugins/pychrysalide/glibext/configuration.c index 235662d..b0586af 100644 --- a/plugins/pychrysalide/glibext/configuration.c +++ b/plugins/pychrysalide/glibext/configuration.c @@ -856,10 +856,8 @@ static PyObject *py_config_param_iterator_next(PyObject *self) iterator->last = item; if (item != NULL) - { result = pygobject_new(G_OBJECT(item->data)); - Py_INCREF(result); - } + else { PyErr_SetNone(PyExc_StopIteration); @@ -1098,7 +1096,7 @@ static int py_generic_config_init(PyObject *self, PyObject *args, PyObject *kwds name = NULL; - ret = PyArg_ParseTuple(args, "s", &name); + ret = PyArg_ParseTuple(args, "|s", &name); if (!ret) return -1; /* Initialisation d'un objet GLib */ @@ -1110,7 +1108,8 @@ static int py_generic_config_init(PyObject *self, PyObject *args, PyObject *kwds config = G_GEN_CONFIG(pygobject_get(self)); - g_generic_config_build(config, name); + if (name != NULL) + g_generic_config_build(config, name); return 0; @@ -1305,7 +1304,7 @@ static PyObject *py_generic_config_search(PyObject *self, PyObject *args) else { result = pygobject_new(G_OBJECT(param)); - //g_object_unref(G_OBJECT(param)); + g_object_unref(G_OBJECT(param)); } return result; @@ -1333,7 +1332,7 @@ static PyObject *py_generic_config_add(PyObject *self, PyObject *args) GCfgParam *param; /* Paramètre GLib transmis */ int ret; /* Bilan de lecture des args. */ GGenConfig *config; /* Version GLib de la config. */ - GCfgParam *added; /* Elément ajouté ou NULL */ + bool status; /* Bilan de l'opération */ #define GENERIC_CONFIG_ADD_METHOD PYTHON_METHOD_DEF \ ( \ @@ -1361,19 +1360,10 @@ static PyObject *py_generic_config_add(PyObject *self, PyObject *args) config = G_GEN_CONFIG(pygobject_get(self)); - g_object_ref(G_OBJECT(param)); - added = _g_generic_config_add_param(config, param, lock); + status = _g_generic_config_add_param(config, param, lock); - if (added == NULL) - { - result = Py_None; - Py_INCREF(result); - } - else - { - result = pygobject_new(G_OBJECT(added)); - //g_object_unref(G_OBJECT(added)); - } + result = status ? Py_True : Py_False; + Py_INCREF(result); return result; @@ -1436,6 +1426,7 @@ static PyObject *py_generic_config_delete(PyObject *self, PyObject *args) static PyObject *py_generic_config_get_filename(PyObject *self, void *closure) { + PyObject *result; /* Chemin à retourner */ GGenConfig *config; /* Version GLib de la config. */ const char *filename; /* Chemin d'accès au fichier */ @@ -1446,14 +1437,23 @@ static PyObject *py_generic_config_get_filename(PyObject *self, void *closure) " configuration.\n" \ "\n" \ "The result is a string pointing to a file which may not" \ - " (yet) exist." \ + " (yet) exist or None if not defined." \ ) config = G_GEN_CONFIG(pygobject_get(self)); filename = g_generic_config_get_filename(config); - return PyUnicode_FromString(filename); + if (filename == NULL) + { + result = Py_None; + Py_INCREF(result); + } + + else + result = PyUnicode_FromString(filename); + + return result; } |