mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-04 09:42:19 +00:00
gst.Structure: raise TypeError when assigning None to a key
This commit is contained in:
parent
b1f499ec7e
commit
dc6b4f7a0a
3 changed files with 19 additions and 1 deletions
|
@ -110,8 +110,10 @@ _wrap_gst_structure_set_value(PyObject *self, PyObject *args, PyObject *kwargs)
|
||||||
"invalid type name");
|
"invalid type name");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
} else if (py_value == Py_None) {
|
||||||
|
PyErr_SetString(PyExc_TypeError, "value can't be None");
|
||||||
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
/* Let PyGTK guess a GType for the object. */
|
|
||||||
type = pyg_type_from_object((PyObject *) py_value->ob_type);
|
type = pyg_type_from_object((PyObject *) py_value->ob_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -154,6 +154,11 @@ pygst_value_init_for_pyobject (GValue * value, PyObject * obj)
|
||||||
{
|
{
|
||||||
GType t;
|
GType t;
|
||||||
|
|
||||||
|
if (obj == Py_None) {
|
||||||
|
PyErr_SetString (PyExc_TypeError, "value can't be None");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(t = pyg_type_from_object ((PyObject *) obj->ob_type))) {
|
if (!(t = pyg_type_from_object ((PyObject *) obj->ob_type))) {
|
||||||
if (PyObject_IsInstance (obj, gstvalue_class)) {
|
if (PyObject_IsInstance (obj, gstvalue_class)) {
|
||||||
PyErr_Clear ();
|
PyErr_Clear ();
|
||||||
|
|
|
@ -180,6 +180,17 @@ class CapsTest(TestCase):
|
||||||
gst.Caps ("some/mime, _double = (double) 1.0; other/mime, _int = { 1, 2 }"),
|
gst.Caps ("some/mime, _double = (double) 1.0; other/mime, _int = { 1, 2 }"),
|
||||||
gst.Caps ("some/mime, _double = (double) 1.0"))
|
gst.Caps ("some/mime, _double = (double) 1.0"))
|
||||||
|
|
||||||
|
def testNoneValue(self):
|
||||||
|
caps = gst.Caps("foo")
|
||||||
|
|
||||||
|
def invalid_assignment():
|
||||||
|
caps[0]["bar"] = None
|
||||||
|
self.assertRaises(TypeError, invalid_assignment)
|
||||||
|
|
||||||
|
def invalid_set_value():
|
||||||
|
caps[0].set_value("bar", None)
|
||||||
|
self.assertRaises(TypeError, invalid_set_value)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Loading…
Reference in a new issue