diff options
Diffstat (limited to 'tools/perf/util/header.c')
| -rw-r--r-- | tools/perf/util/header.c | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index d7e67b167ea..64a85bafde6 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c @@ -946,11 +946,16 @@ perf_header__find_attr(u64 id, struct perf_header *header)  	/*  	 * We set id to -1 if the data file doesn't contain sample -	 * ids. Check for this and avoid walking through the entire -	 * list of ids which may be large. +	 * ids. This can happen when the data file contains one type +	 * of event and in that case, the header can still store the +	 * event attribute information. Check for this and avoid +	 * walking through the entire list of ids which may be large.  	 */ -	if (id == -1ULL) +	if (id == -1ULL) { +		if (header->attrs > 0) +			return &header->attr[0]->attr;  		return NULL; +	}  	for (i = 0; i < header->attrs; i++) {  		struct perf_header_attr *attr = header->attr[i];  |