Re: [PATCH 2/3] perf alias: Rebuild alias expression string to make it comparable

From: Jiri Olsa
Date: Fri Jun 15 2018 - 04:12:50 EST


On Thu, Jun 14, 2018 at 08:53:14AM -0500, Paul Clarke wrote:

SNIP

> > + if (ret)
> > + ret += scnprintf(newval + ret, sizeof(newval) - ret,
> > + ",");
> > + if (term->type_val == PARSE_EVENTS__TERM_TYPE_NUM)
> > + ret += scnprintf(newval + ret, sizeof(newval) - ret,
> > + "%s=%#x", term->config, term->val.num);
> > + else if (term->type_val == PARSE_EVENTS__TERM_TYPE_STR)
> > + ret += scnprintf(newval + ret, sizeof(newval) - ret,
> > + "%s=%s", term->config, term->val.str);
>
> If we exceed 256, we just suddenly terminate the rebuilding without reporting any issues.
>
> > + }
> > +
> > alias->name = strdup(name);
> > if (dir) {
> > /*
> > @@ -285,7 +308,7 @@ static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name,
> > snprintf(alias->unit, sizeof(alias->unit), "%s", unit);
> > }
> > alias->per_pkg = perpkg && sscanf(perpkg, "%d", &num) == 1 && num == 1;
> > - alias->str = strdup(val);
> > + alias->str = strdup(newval);

hum, how is newval different from val? AFAICS it's the same

jirka