[pygobject/gsoc2009: 120/160] Allow None for struct and object arguments
- From: Simon van der Linden <svdlinden src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [pygobject/gsoc2009: 120/160] Allow None for struct and object arguments
- Date: Fri, 14 Aug 2009 21:33:49 +0000 (UTC)
commit e79e60d600f3012082e135b1deee6f042fab1729
Author: Simon van der Linden <svdlinden src gnome org>
Date: Thu Aug 6 15:29:42 2009 +0200
Allow None for struct and object arguments
gi/pygi-argument.c | 15 ++++++++++++++-
1 files changed, 14 insertions(+), 1 deletions(-)
---
diff --git a/gi/pygi-argument.c b/gi/pygi-argument.c
index 4b16c67..8dd1de4 100644
--- a/gi/pygi-argument.c
+++ b/gi/pygi-argument.c
@@ -364,7 +364,7 @@ check_number_release:
}
case GI_TYPE_TAG_UTF8:
case GI_TYPE_TAG_FILENAME:
- if (!PyString_Check(object) && (object != Py_None || may_be_null)) {
+ if (!PyString_Check(object) && (!may_be_null || object != Py_None)) {
PyErr_Format(PyExc_TypeError, "Must be string, not %s",
object->ob_type->tp_name);
retval = 0;
@@ -470,6 +470,9 @@ check_number_release:
}
case GI_INFO_TYPE_BOXED:
case GI_INFO_TYPE_OBJECT:
+ if (may_be_null && object == Py_None) {
+ break;
+ }
retval = _pygi_g_registered_type_info_check_object((GIRegisteredTypeInfo *)info, TRUE, object);
break;
default:
@@ -944,12 +947,22 @@ array_item_error:
break;
}
+ if (object == Py_None) {
+ arg.v_pointer = NULL;
+ break;
+ }
+
buffer = _pygi_object_get_buffer(object, &size);
arg.v_pointer = buffer;
break;
}
case GI_INFO_TYPE_OBJECT:
+ if (object == Py_None) {
+ arg.v_pointer = NULL;
+ break;
+ }
+
arg.v_pointer = pygobject_get(object);
if (transfer == GI_TRANSFER_EVERYTHING) {
g_object_ref(arg.v_pointer);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]