summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Saunier <tsaunier@gnome.org>2016-02-19 17:13:57 +0100
committerThibault Saunier <tsaunier@gnome.org>2016-02-20 21:44:23 +0100
commit3c3e3f428dba6bbeb2cf3359523c24bd5dc3e75b (patch)
tree7d573d499e1b30a510faa93271a675bd132d780e
parent2a7c9fd82d01cbde54ed57cc8b409d32600e6101 (diff)
Fix bug when checking template object type
-rw-r--r--gi/overrides/gstmodule.c25
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;
}
}