diff options
author | Thibault Saunier <tsaunier@gnome.org> | 2016-02-19 17:13:57 +0100 |
---|---|---|
committer | Thibault Saunier <tsaunier@gnome.org> | 2016-02-20 21:44:23 +0100 |
commit | 3c3e3f428dba6bbeb2cf3359523c24bd5dc3e75b (patch) | |
tree | 7d573d499e1b30a510faa93271a675bd132d780e | |
parent | 2a7c9fd82d01cbde54ed57cc8b409d32600e6101 (diff) |
Fix bug when checking template object type
-rw-r--r-- | gi/overrides/gstmodule.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/gi/overrides/gstmodule.c b/gi/overrides/gstmodule.c index 3739aed..f76943e 100644 --- a/gi/overrides/gstmodule.c +++ b/gi/overrides/gstmodule.c @@ -147,10 +147,27 @@ add_templates (gpointer gclass, PyObject * templates) for (i = 0; i < len; i++) { templ = (PyGObject *) PyTuple_GetItem (templates, i); - if (!pygobject_check (templates, &PyGObject_Type) || - GST_IS_PAD_TEMPLATE (pygobject_get (templates)) == FALSE) { - PyErr_SetString (PyExc_TypeError, - "entries for __gsttemplates__ must be of type GstPadTemplate"); + + if (!pygobject_check (templ, &PyGObject_Type)) { + PyObject *repr = PyObject_Repr ((PyObject *) templ); +#if PY_VERSION_HEX < 0x03000000 + PyErr_Format (PyExc_TypeError, "expected GObject but got %s", + PyString_AsString (repr)); +#else + PyErr_Format (PyExc_TypeError, "expected GObject but got %s", + _PyUnicode_AsString (repr)); +#endif + Py_DECREF (repr); + + return -1; + } else if (!GST_IS_PAD_TEMPLATE (pygobject_get (templ))) { + gchar *error = + g_strdup_printf + ("entries for __gsttemplates__ must be of type GstPadTemplate (%s)", + G_OBJECT_TYPE_NAME (pygobject_get (templ))); + PyErr_SetString (PyExc_TypeError, error); + g_free (error); + return -1; } } |