summaryrefslogtreecommitdiffstats
path: root/clang/lib/Lex/HeaderSearch.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-12-09 16:48:01 +0000
committerDouglas Gregor <dgregor@apple.com>2011-12-09 16:48:01 +0000
commit5ca04bd4e70638da3918c9388b4169d85bcccc83 (patch)
tree256b8ca66a56d44ea3a67436aa69c32454fbc6e8 /clang/lib/Lex/HeaderSearch.cpp
parente32e054279766f16dd26e98a2db6e78dc1e20ba7 (diff)
downloadbcm5719-llvm-5ca04bd4e70638da3918c9388b4169d85bcccc83.tar.gz
bcm5719-llvm-5ca04bd4e70638da3918c9388b4169d85bcccc83.zip
When performing subframework header lookup, don't search for
".framework/" in the path name, because it could be ".framework\" on Windows. This whole function needs to be rewritten with PathV2. llvm-svn: 146261
Diffstat (limited to 'clang/lib/Lex/HeaderSearch.cpp')
-rw-r--r--clang/lib/Lex/HeaderSearch.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/clang/lib/Lex/HeaderSearch.cpp b/clang/lib/Lex/HeaderSearch.cpp
index 0071ff533c9..8a73fb95658 100644
--- a/clang/lib/Lex/HeaderSearch.cpp
+++ b/clang/lib/Lex/HeaderSearch.cpp
@@ -535,6 +535,7 @@ LookupSubframeworkHeader(StringRef Filename,
assert(ContextFileEnt && "No context file?");
// Framework names must have a '/' in the filename. Find it.
+ // FIXME: Should we permit '\' on Windows?
size_t SlashPos = Filename.find('/');
if (SlashPos == StringRef::npos) return 0;
@@ -542,12 +543,15 @@ LookupSubframeworkHeader(StringRef Filename,
const char *ContextName = ContextFileEnt->getName();
// If the context info wasn't a framework, couldn't be a subframework.
- const char *FrameworkPos = strstr(ContextName, ".framework/");
- if (FrameworkPos == 0)
+ const unsigned DotFrameworkLen = 10;
+ const char *FrameworkPos = strstr(ContextName, ".framework");
+ if (FrameworkPos == 0 ||
+ (FrameworkPos[DotFrameworkLen] != '/' &&
+ FrameworkPos[DotFrameworkLen] != '\\'))
return 0;
llvm::SmallString<1024> FrameworkName(ContextName,
- FrameworkPos+strlen(".framework/"));
+ FrameworkPos+DotFrameworkLen+1);
// Append Frameworks/HIToolbox.framework/
FrameworkName += "Frameworks/";
OpenPOWER on IntegriCloud