summaryrefslogtreecommitdiffstats
path: root/gobject/pygenum.c
diff options
context:
space:
mode:
Diffstat (limited to 'gobject/pygenum.c')
-rw-r--r--gobject/pygenum.c18
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,