diff options
Diffstat (limited to 'gcc/prefix.c')
-rw-r--r-- | gcc/prefix.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/gcc/prefix.c b/gcc/prefix.c index df556aaa30c..373707fc595 100644 --- a/gcc/prefix.c +++ b/gcc/prefix.c @@ -238,16 +238,20 @@ tr (char *string, int c1, int c2) while (*string++); } -/* Update PATH using KEY if PATH starts with PREFIX. The returned - string is always malloc-ed, and the caller is responsible for - freeing it. */ +/* Update PATH using KEY if PATH starts with PREFIX as a directory. + The returned string is always malloc-ed, and the caller is + responsible for freeing it. */ char * update_path (const char *path, const char *key) { char *result, *p; + const int len = strlen (std_prefix); - if (! strncmp (path, std_prefix, strlen (std_prefix)) && key != 0) + if (! strncmp (path, std_prefix, len) + && (IS_DIR_SEPARATOR(path[len]) + || path[len] == '\0') + && key != 0) { bool free_key = false; @@ -257,7 +261,7 @@ update_path (const char *path, const char *key) free_key = true; } - result = concat (key, &path[strlen (std_prefix)], NULL); + result = concat (key, &path[len], NULL); if (free_key) free ((char *) key); result = translate_name (result); |