From 428d4d7660cb092c281734b56d62dce45d7b599a Mon Sep 17 00:00:00 2001 From: Thomas Quinot Date: Sat, 15 May 2004 17:14:40 +0200 Subject: [PATCH] prefix.c (update_path): Replace PREFIX with KEY only when it matches a full directory name in PATH. 2004-05-15 Thomas Quinot * prefix.c (update_path): Replace PREFIX with KEY only when it matches a full directory name in PATH. From-SVN: r81883 --- gcc/ChangeLog | 5 +++++ gcc/prefix.c | 14 +++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dfd84927c00..abf444b834e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-05-15 Thomas Quinot + + * prefix.c (update_path): Replace PREFIX with KEY only + when it matches a full directory name in PATH. + 2004-05-15 Richard Earnshaw * arm.h (TARGET_APCS_32): Delete. 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); -- 2.30.2