diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2009-11-19 11:55:55 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-11-19 12:47:17 -0500 |
commit | 4dc0a04bb18fe9b80cefa08694f46a3a19ebfe50 (patch) | |
tree | 6d3ff5b79e71985ef4691df2d47202a4f6c3bd53 /tools/perf/util/data_map.c | |
parent | 2446042c93bfc6eeebfc89e88fdef2435d2bb5c4 (diff) |
perf tools: perf_header__read() shouldn't die()
And also don't call the constructor in it, this way it adheres
to the model the other methods follow.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
LKML-Reference: <1258649757-17554-1-git-send-email-acme@infradead.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/util/data_map.c')
-rw-r--r-- | tools/perf/util/data_map.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/tools/perf/util/data_map.c b/tools/perf/util/data_map.c index 14cb8465eb08..b8fc0fa2f632 100644 --- a/tools/perf/util/data_map.c +++ b/tools/perf/util/data_map.c | |||
@@ -106,7 +106,7 @@ int mmap_dispatch_perf_file(struct perf_header **pheader, | |||
106 | int *cwdlen, | 106 | int *cwdlen, |
107 | char **cwd) | 107 | char **cwd) |
108 | { | 108 | { |
109 | int ret, rc = EXIT_FAILURE; | 109 | int err, rc = EXIT_FAILURE; |
110 | struct perf_header *header; | 110 | struct perf_header *header; |
111 | unsigned long head, shift; | 111 | unsigned long head, shift; |
112 | unsigned long offset = 0; | 112 | unsigned long offset = 0; |
@@ -132,8 +132,8 @@ int mmap_dispatch_perf_file(struct perf_header **pheader, | |||
132 | exit(-1); | 132 | exit(-1); |
133 | } | 133 | } |
134 | 134 | ||
135 | ret = fstat(input, &input_stat); | 135 | err = fstat(input, &input_stat); |
136 | if (ret < 0) { | 136 | if (err < 0) { |
137 | perror("failed to stat file"); | 137 | perror("failed to stat file"); |
138 | exit(-1); | 138 | exit(-1); |
139 | } | 139 | } |
@@ -149,8 +149,16 @@ int mmap_dispatch_perf_file(struct perf_header **pheader, | |||
149 | exit(0); | 149 | exit(0); |
150 | } | 150 | } |
151 | 151 | ||
152 | *pheader = perf_header__read(input); | 152 | header = perf_header__new(); |
153 | header = *pheader; | 153 | if (header == NULL) |
154 | return -ENOMEM; | ||
155 | |||
156 | err = perf_header__read(header, input); | ||
157 | if (err < 0) { | ||
158 | perf_header__delete(header); | ||
159 | return err; | ||
160 | } | ||
161 | *pheader = header; | ||
154 | head = header->data_offset; | 162 | head = header->data_offset; |
155 | 163 | ||
156 | sample_type = perf_header__sample_type(header); | 164 | sample_type = perf_header__sample_type(header); |