diff options
| author | Bastian Winkler <buz@netbuz.org> | 2009-08-14 15:10:26 +0200 |
|---|---|---|
| committer | Gian Mario Tagliaretti <gianmt@gnome.org> | 2009-12-25 16:46:03 +0100 |
| commit | 2bd92cba5b028f0f78c35ecb34e648e95248f9d3 (patch) | |
| tree | 21c717b290df348de8f6309995de99dec89f5b12 | |
| parent | 867536c6734e606d045760837ed22583da06566e (diff) | |
| download | pygobject-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.c | 15 |
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)); |
