diff options
author | Roman Divacky <rdivacky@FreeBSD.org> | 2010-03-16 16:52:15 +0000 |
---|---|---|
committer | Roman Divacky <rdivacky@FreeBSD.org> | 2010-03-16 16:52:15 +0000 |
commit | 4a37f65f1c1373c9956d118a012943de2f61edb0 (patch) | |
tree | 52aebaff3a47b97dbac434530524c30967468412 /lib/Lex/Lexer.cpp | |
parent | a16e9ac1f192503038f49e0c52edd7dcb2ce023a (diff) | |
download | src-4a37f65f1c1373c9956d118a012943de2f61edb0.tar.gz src-4a37f65f1c1373c9956d118a012943de2f61edb0.zip |
Update clang to r98631.
Notes
Notes:
svn path=/vendor/clang/dist/; revision=205219
Diffstat (limited to 'lib/Lex/Lexer.cpp')
-rw-r--r-- | lib/Lex/Lexer.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/Lex/Lexer.cpp b/lib/Lex/Lexer.cpp index 3207062ccadd..6cdb96f37de4 100644 --- a/lib/Lex/Lexer.cpp +++ b/lib/Lex/Lexer.cpp @@ -229,14 +229,18 @@ unsigned Lexer::MeasureTokenLength(SourceLocation Loc, // the token this macro expanded to. Loc = SM.getInstantiationLoc(Loc); std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc); - std::pair<const char *,const char *> Buffer = SM.getBufferData(LocInfo.first); - const char *StrData = Buffer.first+LocInfo.second; + bool Invalid = false; + llvm::StringRef Buffer = SM.getBufferData(LocInfo.first, &Invalid); + if (Invalid) + return 0; + + const char *StrData = Buffer.data()+LocInfo.second; if (isWhitespace(StrData[0])) return 0; // Create a lexer starting at the beginning of this token. - Lexer TheLexer(Loc, LangOpts, Buffer.first, StrData, Buffer.second); + Lexer TheLexer(Loc, LangOpts, Buffer.begin(), StrData, Buffer.end()); TheLexer.SetCommentRetentionState(true); Token TheTok; TheLexer.LexFromRawLexer(TheTok); |