aboutsummaryrefslogtreecommitdiff
path: root/gcc/gcov.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2019-01-24 09:27:39 +0100
committerMartin Liska <marxin@gcc.gnu.org>2019-01-24 08:27:39 +0000
commit12502bf2e905cba16edf28941a37e6de432ea108 (patch)
tree3bb6d2911140400e28773f6ab238f857c25988d5 /gcc/gcov.c
parent07fd2247eed45cd69c7b2294fe528c9bbe7a838e (diff)
downloadgcc-12502bf2e905cba16edf28941a37e6de432ea108.zip
gcc-12502bf2e905cba16edf28941a37e6de432ea108.tar.gz
gcc-12502bf2e905cba16edf28941a37e6de432ea108.tar.bz2
Fix broken filename for .gcda files starting with '..' (PR gcov-profile/88994).
2019-01-24 Martin Liska <mliska@suse.cz> PR gcov-profile/88994 * gcov-io.c (mangle_path): Do not allocate a bigger buffer, result will be always smaller or equal to the original. * gcov.c (mangle_name): Fix else branch where we should also copy to PTR and shift the pointer. From-SVN: r268233
Diffstat (limited to 'gcc/gcov.c')
-rw-r--r--gcc/gcov.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/gcc/gcov.c b/gcc/gcov.c
index b8ce1ee..cb6bc7e 100644
--- a/gcc/gcov.c
+++ b/gcc/gcov.c
@@ -2520,6 +2520,9 @@ make_gcov_file_name (const char *input_name, const char *src_name)
return result;
}
+/* Mangle BASE name, copy it at the beginning of PTR buffer and
+ return address of the \0 character of the buffer. */
+
static char *
mangle_name (char const *base, char *ptr)
{
@@ -2527,14 +2530,13 @@ mangle_name (char const *base, char *ptr)
/* Generate the source filename part. */
if (!flag_preserve_paths)
- {
- base = lbasename (base);
- len = strlen (base);
- memcpy (ptr, base, len);
- ptr += len;
- }
+ base = lbasename (base);
else
- ptr = mangle_path (base);
+ base = mangle_path (base);
+
+ len = strlen (base);
+ memcpy (ptr, base, len);
+ ptr += len;
return ptr;
}