summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBastian Winkler <buz@netbuz.org>2009-08-14 15:10:26 +0200
committerGian Mario Tagliaretti <gianmt@gnome.org>2009-12-25 16:46:03 +0100
commit2bd92cba5b028f0f78c35ecb34e648e95248f9d3 (patch)
tree21c717b290df348de8f6309995de99dec89f5b12
parent867536c6734e606d045760837ed22583da06566e (diff)
downloadpygobject-2bd92cba5b028f0f78c35ecb34e648e95248f9d3.tar.gz
pygobject-2bd92cba5b028f0f78c35ecb34e648e95248f9d3.tar.xz
pygobject-2bd92cba5b028f0f78c35ecb34e648e95248f9d3.zip
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.
-rw-r--r--gobject/pygtype.c15
1 files changed, 11 insertions, 4 deletions
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));