diff options
Diffstat (limited to 'tools/perf/util/session.c')
-rw-r--r-- | tools/perf/util/session.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index ea17dfb85baa..cc5e6be46d86 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c | |||
@@ -107,8 +107,19 @@ struct perf_session *perf_session__new(const char *filename, int mode, | |||
107 | bool force, bool repipe, | 107 | bool force, bool repipe, |
108 | struct perf_tool *tool) | 108 | struct perf_tool *tool) |
109 | { | 109 | { |
110 | size_t len = filename ? strlen(filename) : 0; | 110 | struct perf_session *self; |
111 | struct perf_session *self = zalloc(sizeof(*self) + len); | 111 | struct stat st; |
112 | size_t len; | ||
113 | |||
114 | if (!filename || !strlen(filename)) { | ||
115 | if (!fstat(STDIN_FILENO, &st) && S_ISFIFO(st.st_mode)) | ||
116 | filename = "-"; | ||
117 | else | ||
118 | filename = "perf.data"; | ||
119 | } | ||
120 | |||
121 | len = strlen(filename); | ||
122 | self = zalloc(sizeof(*self) + len); | ||
112 | 123 | ||
113 | if (self == NULL) | 124 | if (self == NULL) |
114 | goto out; | 125 | goto out; |