Make the preprocessor own its PPCallbacks, fixing a memory leak.
Patch by Sam Bishop!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48357 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Lex/Preprocessor.cpp b/Lex/Preprocessor.cpp
index 79b0d62..86156a0 100644
--- a/Lex/Preprocessor.cpp
+++ b/Lex/Preprocessor.cpp
@@ -109,6 +109,8 @@
 
   // Delete the scratch buffer info.
   delete ScratchBuf;
+
+  delete Callbacks;
 }
 
 /// Diag - Forwarding function for diagnostics.  This emits a diagnostic at
diff --git a/include/clang/Lex/Preprocessor.h b/include/clang/Lex/Preprocessor.h
index 717f865..98edf5a 100644
--- a/include/clang/Lex/Preprocessor.h
+++ b/include/clang/Lex/Preprocessor.h
@@ -15,6 +15,7 @@
 #define LLVM_CLANG_LEX_PREPROCESSOR_H
 
 #include "clang/Lex/Lexer.h"
+#include "clang/Lex/PPCallbacks.h"
 #include "clang/Lex/TokenLexer.h"
 #include "clang/Basic/IdentifierTable.h"
 #include "clang/Basic/SourceLocation.h"
@@ -176,10 +177,12 @@
   /// expansions going on at the time.
   Lexer *getCurrentFileLexer() const;
   
-  /// getPPCallbacks/SetPPCallbacks - Accessors for preprocessor callbacks.
-  ///
+  /// getPPCallbacks/setPPCallbacks - Accessors for preprocessor callbacks.
+  /// Note that this class takes ownership of any PPCallbacks object given to
+  /// it.
   PPCallbacks *getPPCallbacks() const { return Callbacks; }
   void setPPCallbacks(PPCallbacks *C) {
+    delete Callbacks;
     Callbacks = C;
   }