tracerutils: allow casting parameters types

It was impossible to have an u32 parameter such as
'max-buffer-size=(uint)5' because the parentheses were not properly
parsed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4941>
This commit is contained in:
Guillaume Desmottes 2023-02-16 13:44:50 +01:00 committed by Tim-Philipp Müller
parent bf0446ad73
commit b27523cc26

View file

@ -100,7 +100,21 @@ _priv_gst_tracing_init (void)
while (t[i]) {
// check t[i] for params
if ((params = strchr (t[i], '('))) {
gchar *end = strchr (&params[1], ')');
// params can contain multiple '(' when using this kind of parameter: 'max-buffer-size=(uint)5'
guint n_par = 1, j;
gchar *end = NULL;
for (j = 1; params[j] != '\0'; j++) {
if (params[j] == '(')
n_par++;
else if (params[j] == ')') {
n_par--;
if (n_par == 0) {
end = &params[j];
break;
}
}
}
*params = '\0';
params++;
if (end)