diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-03-16 00:06:06 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-03-16 00:06:06 +0000 |
commit | f715ca12bfc9fddfde75f98a197424434428b821 (patch) | |
tree | bd19f3ce3d9a7850942f25d25c03633954e91faa /lib/Basic/SourceManager.cpp | |
parent | f9b0a58a103784495309543dce4469e44861b4cc (diff) | |
download | clang-f715ca12bfc9fddfde75f98a197424434428b821.tar.gz |
Give SourceManager a Diagnostic object with which to report errors,
and start simplifying the interfaces in SourceManager that can fail.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98594 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Basic/SourceManager.cpp')
-rw-r--r-- | lib/Basic/SourceManager.cpp | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/lib/Basic/SourceManager.cpp b/lib/Basic/SourceManager.cpp index b69ba53f7b..ac2fe3d69e 100644 --- a/lib/Basic/SourceManager.cpp +++ b/lib/Basic/SourceManager.cpp @@ -21,6 +21,7 @@ #include "llvm/System/Path.h" #include <algorithm> #include <string> +#include <cstring> #include <cstdio> using namespace clang; @@ -532,19 +533,17 @@ bool SourceManager::overrideFileContents(const FileEntry *SourceFile, } std::pair<const char*, const char*> -SourceManager::getBufferData(FileID FID, llvm::StringRef &FileName, - std::string &Error) const { - const llvm::MemoryBuffer *Buf = getBuffer(FID).getBuffer(FileName, Error); - if (!Error.empty()) - return std::make_pair((const char *)0, (const char *)0); - return std::make_pair(Buf->getBufferStart(), Buf->getBufferEnd()); -} - -std::pair<const char*, const char*> -SourceManager::getBufferData(FileID FID, Diagnostic &Diags) const { - const llvm::MemoryBuffer *Buf = getBuffer(FID).getBuffer(Diags); - if (!Buf) - return std::make_pair((const char *)0, (const char *)0); +SourceManager::getBufferData(FileID FID, bool *Invalid) const { + if (Invalid) + *Invalid = false; + + const llvm::MemoryBuffer *Buf = getBuffer(FID).getBuffer(Diag); + if (!Buf) { + if (*Invalid) + *Invalid = true; + const char *FakeText = ""; + return std::make_pair(FakeText, FakeText + strlen(FakeText)); + } return std::make_pair(Buf->getBufferStart(), Buf->getBufferEnd()); } |