diff options
-rw-r--r-- | gobject/gobjectmodule.c | 4 | ||||
-rw-r--r-- | tests/gtype.py | 8 |
2 files changed, 7 insertions, 5 deletions
diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c index 546c62b..2dfd990 100644 --- a/gobject/gobjectmodule.c +++ b/gobject/gobjectmodule.c @@ -950,11 +950,9 @@ pyg_type_register(PyObject *self, PyObject *args) if (!PyDict_Check(gsignals)) { PyErr_SetString(PyExc_TypeError, "__gsignals__ attribute not a dict!"); - Py_DECREF(gsignals); return NULL; } if (!add_signals(instance_type, gsignals)) { - Py_DECREF(gsignals); return NULL; } PyDict_DelItemString(class->tp_dict, "__gsignals__"); @@ -970,11 +968,9 @@ pyg_type_register(PyObject *self, PyObject *args) if (!PyDict_Check(gproperties)) { PyErr_SetString(PyExc_TypeError, "__gproperties__ attribute not a dict!"); - Py_DECREF(gproperties); return NULL; } if (!add_properties(instance_type, gproperties)) { - Py_DECREF(gproperties); return NULL; } PyDict_DelItemString(class->tp_dict, "__gproperties__"); diff --git a/tests/gtype.py b/tests/gtype.py index 4cf7dd9..7001094 100644 --- a/tests/gtype.py +++ b/tests/gtype.py @@ -49,7 +49,13 @@ class GTypeTest(unittest.TestCase): def testObject(self): self.checkType(gobject.TYPE_OBJECT, 'PyObject') - + + def testGObjectInvalidSignalOverride(self): + class Foo(gobject.GObject): + __gsignals__ = {} + __gsignals__['monkey'] = 'override' + self.assertRaises(TypeError, gobject.type_register, Foo) + # XXX: Flags, Enums if __name__ == '__main__': |