From fc3dca018e85aee34ade79d104ebd8cdd1dd5968 Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Tue, 24 Nov 2009 15:52:47 +0100 Subject: Accept 0 as a valid value for flag and enum arguments https://bugzilla.gnome.org/show_bug.cgi?id=602638 --- gi/pygi-argument.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'gi') diff --git a/gi/pygi-argument.c b/gi/pygi-argument.c index 3a9e207..7f66b1f 100644 --- a/gi/pygi-argument.c +++ b/gi/pygi-argument.c @@ -384,8 +384,25 @@ check_number_release: PyErr_SetString(PyExc_NotImplementedError, "callback marshalling is not supported yet"); break; case GI_INFO_TYPE_ENUM: + retval = _pygi_g_registered_type_info_check_object( + (GIRegisteredTypeInfo *)info, TRUE, object); + break; case GI_INFO_TYPE_FLAGS: - retval = _pygi_g_registered_type_info_check_object((GIRegisteredTypeInfo *)info, TRUE, object); + if (PyNumber_Check(object)) { + /* Accept 0 as a valid flag value */ + PyObject *number = PyNumber_Int(object); + if (number == NULL) + PyErr_Clear(); + else { + long value = PyInt_AsLong(number); + if (value == 0) + break; + else if (value == -1) + PyErr_Clear(); + } + } + retval = _pygi_g_registered_type_info_check_object( + (GIRegisteredTypeInfo *)info, TRUE, object); break; case GI_INFO_TYPE_STRUCT: { -- cgit