diff options
| author | Paul Pogonyshev <pogonyshev@gmx.net> | 2008-08-11 20:29:27 +0000 |
|---|---|---|
| committer | Paul Pogonyshev <paulp@src.gnome.org> | 2008-08-11 20:29:27 +0000 |
| commit | 8e21620d279e501fcdcacf6ef6dec6cc7397db0e (patch) | |
| tree | bec037850339ea79ee24ef86d840707f6ce48fca /gobject | |
| parent | 83b468fdf8301da3653032c28b6685f0ef5986f8 (diff) | |
| download | pygobject-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.c | 8 |
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"); |
