[pygobject] Fix handling of uchar in pyg_value_from_pyobject



commit 2bd92cba5b028f0f78c35ecb34e648e95248f9d3
Author: Bastian Winkler <buz netbuz org>
Date:   Fri Aug 14 15:10:26 2009 +0200

    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 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));



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]