diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-12-10 15:08:44 -0300 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-12-10 16:51:09 -0300 |
commit | 7e155d4d5e2912f75443c18c02dd6f1dbd4eef84 (patch) | |
tree | 24bc86c6ee5154cd4556ecf0b4a003683b9303d4 /tools/perf/util/dso.c | |
parent | 5230fb7db42914e47786a6e920d2624739b0f896 (diff) | |
download | linux-next-7e155d4d5e2912f75443c18c02dd6f1dbd4eef84.tar.gz |
perf symbols: Remove open coded management of long_name_allocated member
Instead of expecting callers to set this member accodingly so that later
at dso destruction it can, if needed, be correctly free()d, make it a
requirement by passing it as a parameter to dso__set_long_name.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-na7t1tqim22vuqkt4zq5n4ri@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/dso.c')
-rw-r--r-- | tools/perf/util/dso.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c index f8c849767c4d..ecb37d62f814 100644 --- a/tools/perf/util/dso.c +++ b/tools/perf/util/dso.c @@ -386,12 +386,17 @@ struct dso *dso__kernel_findnew(struct machine *machine, const char *name, return dso; } -void dso__set_long_name(struct dso *dso, char *name) +void dso__set_long_name(struct dso *dso, char *name, bool name_allocated) { if (name == NULL) return; - dso->long_name = name; - dso->long_name_len = strlen(name); + + if (dso->long_name_allocated) + free(dso->long_name); + + dso->long_name = name; + dso->long_name_len = strlen(name); + dso->long_name_allocated = name_allocated; } void dso__set_short_name(struct dso *dso, const char *name, bool name_allocated) @@ -444,7 +449,7 @@ struct dso *dso__new(const char *name) if (dso != NULL) { int i; strcpy(dso->name, name); - dso__set_long_name(dso, dso->name); + dso__set_long_name(dso, dso->name, false); dso__set_short_name(dso, dso->name, false); for (i = 0; i < MAP__NR_TYPES; ++i) dso->symbols[i] = dso->symbol_names[i] = RB_ROOT; |