1249 static PyObject *
1250 _wrap_gst_type_find_register (PyObject *self, PyObject *args)
1251 {
1252 guint rank;
1253 PyObject *required_args;
1254 PyObject *function;
1255 PyObject *function_args = NULL;
1256 PyObject *py_extensions = NULL, *ext;
1257 PyObject *py_possible_caps = NULL;
1258 PyObject *py_res = NULL;
1259 gchar *name;
1260 gpointer *data = NULL;
1261 GStrv extensions = NULL;
1262 guint i, n_extensions;
1263 GstCaps *possible_caps = NULL;
1264 gboolean res = FALSE;
1265
1266 if (PyTuple_GET_SIZE(args) > 5) {
when considering range: -0x8000000000000000 <= value <= 5
taking False path
1267 required_args = PyTuple_GetSlice(args, 0, 5);
1268 function_args = PyTuple_GetSlice(args, 5, PyTuple_GET_SIZE(args));
1269 } else {
1270 required_args = args;
1271 }
1272
1273 if (!PyArg_ParseTuple(required_args, "siO|OO:type_find_register",
when PyArg_ParseTuple() succeeds
taking False path
1274 &name, &rank, &function, &py_extensions, &py_possible_caps)) {
1275 goto out;
1276 }
1277
1278 if (!PyCallable_Check(function)) {
when PyCallable_Check() returns 1 (true)
taking False path
1279 PyErr_SetString (PyExc_TypeError, "function is not a callable");
1280 goto out;
1281 }
1282
1283 if (py_extensions) {
taking True path
1284 n_extensions = PySequence_Size(py_extensions);
1285 if (n_extensions == -1) {
when considering range: 0 <= value <= 0xfffffffe
taking False path
1286 goto out;
1287 }
1288
1289 if (n_extensions > 0) {
when considering value == (guint)0 from ./gst.override:1284
taking False path
1290 extensions = (char **) g_malloc(sizeof(char *) * n_extensions + 1);
1291 for(i = 0; i < n_extensions; ++i) {
1292 ext = PySequence_GetItem(py_extensions, i);
1293
1294 if (!PyString_Check(ext)) {
1295 PyErr_SetString(PyExc_TypeError, "extension is not a string");
1296 goto out;
1297 }
1298
1299 extensions[i] = g_strdup(PyString_AS_STRING(ext));
1300 }
1301
1302 extensions[n_extensions] = NULL;
1303 }
1304 }
1305
1306 if (py_possible_caps)
taking True path
1307 possible_caps = pygst_caps_from_pyobject(py_possible_caps, NULL);
1308
1309 if (function_args)
taking False path
1310 data = (gpointer) Py_BuildValue("(OO)", function, function_args);
1311 else
1312 data = (gpointer) Py_BuildValue("(O)", function);
when Py_BuildValue() succeeds
new ref from call to Py_BuildValue allocated at: data = (gpointer) Py_BuildValue("(O)", function);
ob_refcnt is now refs: 1 + N where N >= 0
1313
1314 pyg_begin_allow_threads;
when treating unknown struct _PyGObject_Functions * from /usr/include/pygtk-2.0/pygobject.h:207 as non-NULL
when considering range: -0x80000000 <= value <= -1
taking True path
releasing the GIL by calling PyEval_SaveThread()
1315 res = gst_type_find_register(NULL, name, rank,
1316 type_find_function, extensions, possible_caps,
1317 data, type_find_function_data_destroy_notify);
1318 pyg_end_allow_threads;
when considering range: 1 <= value <= 0x7fffffff
taking True path
reacquiring the GIL by calling PyEval_RestoreThread()
1319
1320 py_res = PyBool_FromLong(res);
PyBool_FromLong() returns
1321
1322 out:
1323 if (required_args != args) {
taking False path
1324 Py_DECREF(required_args);
1325 }
1326
1327 Py_XDECREF(function_args);
taking True path
1328
1329 if (extensions)
taking False path
1330 g_strfreev(extensions);
1331
1332 if (possible_caps)
when treating unknown struct GstCaps * from ./gst.override:1307 as non-NULL
taking True path
1333 gst_caps_unref(possible_caps);
1334
1335 if (res == FALSE && data) {
when considering range: -0x80000000 <= value <= -1
taking False path
1336 Py_DECREF((PyObject *) data);
1337 }
1338
1339 return py_res;
returning
ob_refcnt of '*data' is 1 too high
was expecting final ob_refcnt to be N + 0 (for some unknown N)
but final ob_refcnt is N + 1
found 9 similar trace(s) to this
1340 }