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>
This commit is contained in:
Arnaldo Carvalho de Melo
2009-11-19 14:55:55 -02:00
committed by Ingo Molnar
parent 2446042c93
commit 4dc0a04bb1
5 changed files with 70 additions and 40 deletions

View File

@@ -106,7 +106,7 @@ int mmap_dispatch_perf_file(struct perf_header **pheader,
int *cwdlen,
char **cwd)
{
int ret, rc = EXIT_FAILURE;
int err, rc = EXIT_FAILURE;
struct perf_header *header;
unsigned long head, shift;
unsigned long offset = 0;
@@ -132,8 +132,8 @@ int mmap_dispatch_perf_file(struct perf_header **pheader,
exit(-1);
}
ret = fstat(input, &input_stat);
if (ret < 0) {
err = fstat(input, &input_stat);
if (err < 0) {
perror("failed to stat file");
exit(-1);
}
@@ -149,8 +149,16 @@ int mmap_dispatch_perf_file(struct perf_header **pheader,
exit(0);
}
*pheader = perf_header__read(input);
header = *pheader;
header = perf_header__new();
if (header == NULL)
return -ENOMEM;
err = perf_header__read(header, input);
if (err < 0) {
perf_header__delete(header);
return err;
}
*pheader = header;
head = header->data_offset;
sample_type = perf_header__sample_type(header);