aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/perf/ui/browsers/hists.c4
-rw-r--r--tools/perf/util/target.c11
2 files changed, 12 insertions, 3 deletions
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index 482f0517b61e..413bd62eedb1 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -978,8 +978,8 @@ static int hist_browser__dump(struct hist_browser *browser)
978 fp = fopen(filename, "w"); 978 fp = fopen(filename, "w");
979 if (fp == NULL) { 979 if (fp == NULL) {
980 char bf[64]; 980 char bf[64];
981 strerror_r(errno, bf, sizeof(bf)); 981 const char *err = strerror_r(errno, bf, sizeof(bf));
982 ui_helpline__fpush("Couldn't write to %s: %s", filename, bf); 982 ui_helpline__fpush("Couldn't write to %s: %s", filename, err);
983 return -1; 983 return -1;
984 } 984 }
985 985
diff --git a/tools/perf/util/target.c b/tools/perf/util/target.c
index 1064d5b148ad..3f59c496e64c 100644
--- a/tools/perf/util/target.c
+++ b/tools/perf/util/target.c
@@ -110,8 +110,17 @@ int perf_target__strerror(struct perf_target *target, int errnum,
110 int idx; 110 int idx;
111 const char *msg; 111 const char *msg;
112 112
113 BUG_ON(buflen > 0);
114
113 if (errnum >= 0) { 115 if (errnum >= 0) {
114 strerror_r(errnum, buf, buflen); 116 const char *err = strerror_r(errnum, buf, buflen);
117
118 if (err != buf) {
119 size_t len = strlen(err);
120 char *c = mempcpy(buf, err, min(buflen - 1, len));
121 *c = '\0';
122 }
123
115 return 0; 124 return 0;
116 } 125 }
117 126