summaryrefslogtreecommitdiffstats
path: root/gobject
diff options
context:
space:
mode:
authorPaul Pogonyshev <pogonyshev@gmx.net>2008-08-11 20:29:27 +0000
committerPaul Pogonyshev <paulp@src.gnome.org>2008-08-11 20:29:27 +0000
commit8e21620d279e501fcdcacf6ef6dec6cc7397db0e (patch)
treebec037850339ea79ee24ef86d840707f6ce48fca /gobject
parent83b468fdf8301da3653032c28b6685f0ef5986f8 (diff)
downloadpygobject-8e21620d279e501fcdcacf6ef6dec6cc7397db0e.tar.gz
pygobject-8e21620d279e501fcdcacf6ef6dec6cc7397db0e.tar.xz
pygobject-8e21620d279e501fcdcacf6ef6dec6cc7397db0e.zip
Bug 540376 – No TypeError raised when type is None
2008-08-11 Paul Pogonyshev <pogonyshev@gmx.net> Bug 540376 – No TypeError raised when type is None * gobject/gobjectmodule.c (pyg_signal_new): Add check on second argument type. * tests/test_signal.py (TestSignalCreation): New test case. svn path=/trunk/; revision=942
Diffstat (limited to 'gobject')
-rw-r--r--gobject/gobjectmodule.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c
index b7fadfd..29ccdf2 100644
--- a/gobject/gobjectmodule.c
+++ b/gobject/gobjectmodule.c
@@ -1314,12 +1314,20 @@ pyg_signal_new(PyObject *self, PyObject *args)
&py_type, &signal_flags, &py_return_type,
&py_param_types))
return NULL;
+
instance_type = pyg_type_from_object(py_type);
if (!instance_type)
return NULL;
+ if (!(G_TYPE_IS_INSTANTIATABLE(instance_type) || G_TYPE_IS_INTERFACE(instance_type))) {
+ PyErr_SetString(PyExc_TypeError,
+ "argument 2 must be an object type or interface type");
+ return NULL;
+ }
+
return_type = pyg_type_from_object(py_return_type);
if (!return_type)
return NULL;
+
if (!PySequence_Check(py_param_types)) {
PyErr_SetString(PyExc_TypeError,
"argument 5 must be a sequence of GType codes");