diff options
author | Arjan van de Ven <arjan@linux.intel.com> | 2010-08-23 21:27:40 -0700 |
---|---|---|
committer | Arjan van de Ven <arjan@linux.intel.com> | 2010-08-23 21:27:40 -0700 |
commit | f92c5385509c189dc018398b9a5c5e385b177952 (patch) | |
tree | cb456d16e9a7aa8518522dc3c26c5283092e0d67 /perf | |
parent | 1c5b04def98702929805e331881f088ee4b111a6 (diff) | |
download | powertop-f92c5385509c189dc018398b9a5c5e385b177952.tar.gz |
fix some memory leaks
Diffstat (limited to 'perf')
-rw-r--r-- | perf/perf.cpp | 8 | ||||
-rw-r--r-- | perf/perf.h | 2 | ||||
-rw-r--r-- | perf/perf_bundle.cpp | 3 |
3 files changed, 12 insertions, 1 deletions
diff --git a/perf/perf.cpp b/perf/perf.cpp index e205bd8..9bef4b3 100644 --- a/perf/perf.cpp +++ b/perf/perf.cpp @@ -144,6 +144,8 @@ void perf_event::create_perf_event(char *eventname, int cpu) void perf_event::set_event_name(const char *event_name) { + if (name) + free(name); name = strdup(event_name); char *c; @@ -154,6 +156,12 @@ void perf_event::set_event_name(const char *event_name) trace_type = get_trace_type(name); } +perf_event::~perf_event(void) +{ + if (name) + free(name); +} + void perf_event::set_cpu(int _cpu) { cpu = _cpu; diff --git a/perf/perf.h b/perf/perf.h index e36a716..964393e 100644 --- a/perf/perf.h +++ b/perf/perf.h @@ -25,6 +25,8 @@ public: perf_event(void); perf_event(const char *event_name, int cpu = 0, int buffer_size = 128); + ~perf_event(void); + void set_event_name(const char *event_name); void set_cpu(int cpu); diff --git a/perf/perf_bundle.cpp b/perf/perf_bundle.cpp index 1ba024e..863fa30 100644 --- a/perf/perf_bundle.cpp +++ b/perf/perf_bundle.cpp @@ -48,7 +48,8 @@ void perf_bundle::add_event(const char *event_name) if ((int)ev->trace_type >= 0) { if (event_names.size() <= ev->trace_type) event_names.resize(ev->trace_type + 1, NULL); - event_names[ev->trace_type] = strdup(event_name); + if (!event_names[ev->trace_type]) + event_names[ev->trace_type] = strdup(event_name); events.push_back(ev); } else { |