diff options
Diffstat (limited to 'gobject/pygenum.c')
-rw-r--r-- | gobject/pygenum.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/gobject/pygenum.c b/gobject/pygenum.c index aa8907e..2c0ee12 100644 --- a/gobject/pygenum.c +++ b/gobject/pygenum.c @@ -73,7 +73,7 @@ pyg_enum_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "value", NULL }; long value; - PyObject *pytc, *values, *ret; + PyObject *pytc, *values, *ret, *intvalue; GType gtype; GEnumClass *eclass; @@ -117,7 +117,9 @@ pyg_enum_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) g_type_class_unref(eclass); - ret = PyDict_GetItem(values, PyInt_FromLong(value)); + intvalue = PyInt_FromLong(value); + ret = PyDict_GetItem(values, intvalue); + Py_DECREF(intvalue); Py_DECREF(values); if (ret) Py_INCREF(ret); @@ -130,7 +132,7 @@ pyg_enum_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) PyObject* pyg_enum_from_gtype (GType gtype, int value) { - PyObject *pyclass, *values, *retval; + PyObject *pyclass, *values, *retval, *intvalue; g_return_val_if_fail(gtype != G_TYPE_INVALID, NULL); @@ -143,7 +145,9 @@ pyg_enum_from_gtype (GType gtype, int value) values = PyDict_GetItemString(((PyTypeObject *)pyclass)->tp_dict, "__enum_values__"); - retval = PyDict_GetItem(values, PyInt_FromLong(value)); + intvalue = PyInt_FromLong(value); + retval = PyDict_GetItem(values, intvalue); + Py_DECREF(intvalue); if (!retval) { PyErr_Clear(); retval = ((PyTypeObject *)pyclass)->tp_alloc((PyTypeObject *)pyclass, 0); @@ -210,13 +214,15 @@ pyg_enum_add (PyObject * module, values = PyDict_New(); for (i = 0; i < eclass->n_values; i++) { - PyObject *item; + PyObject *item, *intval; item = ((PyTypeObject *)stub)->tp_alloc((PyTypeObject *)stub, 0); ((PyIntObject*)item)->ob_ival = eclass->values[i].value; ((PyGEnum*)item)->gtype = gtype; - PyDict_SetItem(values, PyInt_FromLong(eclass->values[i].value), item); + intval = PyInt_FromLong(eclass->values[i].value); + PyDict_SetItem(values, intval, item); + Py_DECREF(intval); if (module) { PyModule_AddObject(module, |