diff options
Diffstat (limited to 'tools/perf/util')
| -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) | |||
| 946 | 946 | ||
| 947 | /* | 947 | /* |
| 948 | * We set id to -1 if the data file doesn't contain sample | 948 | * We set id to -1 if the data file doesn't contain sample |
| 949 | * ids. Check for this and avoid walking through the entire | 949 | * ids. This can happen when the data file contains one type |
| 950 | * list of ids which may be large. | 950 | * of event and in that case, the header can still store the |
| 951 | * event attribute information. Check for this and avoid | ||
| 952 | * walking through the entire list of ids which may be large. | ||
| 951 | */ | 953 | */ |
| 952 | if (id == -1ULL) | 954 | if (id == -1ULL) { |
| 955 | if (header->attrs > 0) | ||
| 956 | return &header->attr[0]->attr; | ||
| 953 | return NULL; | 957 | return NULL; |
| 958 | } | ||
| 954 | 959 | ||
| 955 | for (i = 0; i < header->attrs; i++) { | 960 | for (i = 0; i < header->attrs; i++) { |
| 956 | struct perf_header_attr *attr = header->attr[i]; | 961 | struct perf_header_attr *attr = header->attr[i]; |
