From 84d124e8f02d5bba60d3491d4c5d7cb68aa91192 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 26 Nov 2014 16:14:49 -0500 Subject: [PATCH] Fix lookup of source names after conversion to their actual case (#15259) Since commit v3.1.0-rc1~688^2~15 (cmTarget: Add a method to obtain list of filenames for sources, 2014-03-17) we have code paths that lookup sources by strings containing their own full path after normalization to the actual case on disk. This fails in the case that a cmSourceFile has already been created with a different case in the filename. The comparison of the directory works because it is always normalized. Only the comparison of the file name fails. Fix this by using a case-insensitive comparison of source file names on platforms that do not have case-sensitive filesystems. --- Source/cmSourceFileLocation.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/cmSourceFileLocation.cxx b/Source/cmSourceFileLocation.cxx index 1c2454e69..004fd1f50 100644 --- a/Source/cmSourceFileLocation.cxx +++ b/Source/cmSourceFileLocation.cxx @@ -216,7 +216,8 @@ bool cmSourceFileLocation::Matches(cmSourceFileLocation const& loc) // Both extensions are similarly ambiguous. Since only the old fixed set // of extensions will be tried, the names must match at this point to be // the same file. - if(this->Name.size() != loc.Name.size() || this->Name != loc.Name) + if(this->Name.size() != loc.Name.size() || + !cmSystemTools::ComparePath(this->Name, loc.Name)) { return false; }