diff options
| author | Douglas Gregor <dgregor@apple.com> | 2010-02-27 01:32:48 +0000 | 
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2010-02-27 01:32:48 +0000 | 
| commit | 89a56c561f7ea5970167695e86e2eaf4e0155d55 (patch) | |
| tree | 36c628482b47e89a3e1d53874d0f222efbec1ea2 /clang/lib/Frontend/InitPreprocessor.cpp | |
| parent | e7179e8b76e6133242b3bcecd7a5b8c2bfe83907 (diff) | |
| download | llvm-89a56c561f7ea5970167695e86e2eaf4e0155d55.zip llvm-89a56c561f7ea5970167695e86e2eaf4e0155d55.tar.gz llvm-89a56c561f7ea5970167695e86e2eaf4e0155d55.tar.bz2  | |
When given unsaved files in clang_createTranslationUnitFromSourceFile,
copy the source buffers provided rather than referencing them
directly, so that the caller can free those buffers immediately after
calling clang_createTranslationUnitFromSourceFile(). Otherwise, we
risk hitting those buffers later (when building source ranges, forming
diagnostics, etc.). 
llvm-svn: 97296
Diffstat (limited to 'clang/lib/Frontend/InitPreprocessor.cpp')
| -rw-r--r-- | clang/lib/Frontend/InitPreprocessor.cpp | 3 | 
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index b7ab3d8..8bcd3a8 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -439,6 +439,7 @@ static void InitializeFileRemapping(Diagnostic &Diags,      if (!FromFile) {        Diags.Report(diag::err_fe_remap_missing_from_file)          << Remap->first; +      delete Remap->second;        continue;      } @@ -477,7 +478,7 @@ static void InitializeFileRemapping(Diagnostic &Diags,      = llvm::MemoryBuffer::getFile(ToFile->getName(), &ErrorStr);      if (!Buffer) {        Diags.Report(diag::err_fe_error_opening) -      << Remap->second << ErrorStr; +        << Remap->second << ErrorStr;        continue;      }  | 
