diff options
| author | Ted Kremenek <kremenek@apple.com> | 2007-12-18 22:12:19 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2007-12-18 22:12:19 +0000 |
| commit | 8c8947fb921e01d0937c47873a3c818ff20d1da0 (patch) | |
| tree | 57967de5d5375600671f937b6098e3076f230b0e /clang/Basic/SourceManager.cpp | |
| parent | 14020706d80572504c107fcf6a8d1aaad4d0f2ff (diff) | |
| download | bcm5719-llvm-8c8947fb921e01d0937c47873a3c818ff20d1da0.tar.gz bcm5719-llvm-8c8947fb921e01d0937c47873a3c818ff20d1da0.zip | |
When serializing SourceManager, we now serialize out absolute paths
to serialized source files.
llvm-svn: 45183
Diffstat (limited to 'clang/Basic/SourceManager.cpp')
| -rw-r--r-- | clang/Basic/SourceManager.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/clang/Basic/SourceManager.cpp b/clang/Basic/SourceManager.cpp index 22a7cf511f2..d7039b3651c 100644 --- a/clang/Basic/SourceManager.cpp +++ b/clang/Basic/SourceManager.cpp @@ -415,7 +415,19 @@ void ContentCache::Emit(llvm::Serializer& S) const { S.FlushRecord(); S.EmitPtr(this); - if (Entry) S.EmitCStr(Buffer->getBufferIdentifier()); + if (Entry) { + llvm::sys::Path Fname(Buffer->getBufferIdentifier()); + + if (Fname.isAbsolute()) + S.EmitCStr(Fname.c_str()); + else { + // Create an absolute path. + // FIXME: This will potentially contain ".." and "." in the path. + llvm::sys::Path path = llvm::sys::Path::GetCurrentDirectory(); + path.appendComponent(Fname.c_str()); + S.EmitCStr(path.c_str()); + } + } else { const char* p = Buffer->getBufferStart(); const char* e = Buffer->getBufferEnd(); |

