diff options
author | Brad King <brad.king@kitware.com> | 2014-11-26 21:14:49 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-11-26 22:03:40 (GMT) |
commit | 84d124e8f02d5bba60d3491d4c5d7cb68aa91192 (patch) | |
tree | 80667afd4138057e180c7fbaf21267b53bfe4445 /Source/cmSourceFileLocation.cxx | |
parent | d2f2a2e226a8717d6fdb6df0ed4858d1629f557c (diff) | |
download | CMake-84d124e8f02d5bba60d3491d4c5d7cb68aa91192.zip CMake-84d124e8f02d5bba60d3491d4c5d7cb68aa91192.tar.gz CMake-84d124e8f02d5bba60d3491d4c5d7cb68aa91192.tar.bz2 |
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.
Diffstat (limited to 'Source/cmSourceFileLocation.cxx')
-rw-r--r-- | Source/cmSourceFileLocation.cxx | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/Source/cmSourceFileLocation.cxx b/Source/cmSourceFileLocation.cxx index 1c2454e..004fd1f 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; } |