From 2bd92cba5b028f0f78c35ecb34e648e95248f9d3 Mon Sep 17 00:00:00 2001 From: Bastian Winkler Date: Fri, 14 Aug 2009 15:10:26 +0200 Subject: Fix handling of uchar in pyg_value_from_pyobject Set the value by g_value_set_uchar and allow to use integer types from python. --- gobject/pygtype.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'gobject') diff --git a/gobject/pygtype.c b/gobject/pygtype.c index 782e998..5550ce8 100644 --- a/gobject/pygtype.c +++ b/gobject/pygtype.c @@ -740,13 +740,20 @@ pyg_value_from_pyobject(GValue *value, PyObject *obj) Py_DECREF(tmp); break; case G_TYPE_UCHAR: - if ((tmp = PyObject_Str(obj))) - g_value_set_char(value, _PyUnicode_AsString(tmp)[0]); - else { + if (_PyLong_Check(obj)) { + glong val; + val = _PyLong_AsLong(obj); + if (val >= 0 && val <= 255) + g_value_set_uchar(value, (guchar)_PyLong_AsLong (obj)); + else + return -1; + } else if ((tmp = PyObject_Str(obj))) { + g_value_set_uchar(value, _PyUnicode_AsString(tmp)[0]); + Py_DECREF(tmp); + } else { PyErr_Clear(); return -1; } - Py_DECREF(tmp); break; case G_TYPE_BOOLEAN: g_value_set_boolean(value, PyObject_IsTrue(obj)); -- cgit