[cfe-commits] r135749 - in /cfe/trunk: include/clang/Serialization/ASTWriter.h lib/Serialization/GeneratePCH.cpp
Douglas Gregor
dgregor at apple.com
Thu Jul 21 23:03:18 PDT 2011
Author: dgregor
Date: Fri Jul 22 01:03:18 2011
New Revision: 135749
URL: http://llvm.org/viewvc/llvm-project?rev=135749&view=rev
Log:
Fix an embarrassing bug in relocatable PCH support, where we were
passing a temporary const char* down as the "isysroot" parameter and
then accessing it later. Fixes <rdar://problem/9035180>.
Modified:
cfe/trunk/include/clang/Serialization/ASTWriter.h
cfe/trunk/lib/Serialization/GeneratePCH.cpp
Modified: cfe/trunk/include/clang/Serialization/ASTWriter.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Serialization/ASTWriter.h?rev=135749&r1=135748&r2=135749&view=diff
==============================================================================
--- cfe/trunk/include/clang/Serialization/ASTWriter.h (original)
+++ cfe/trunk/include/clang/Serialization/ASTWriter.h Fri Jul 22 01:03:18 2011
@@ -632,6 +632,7 @@
public:
PCHGenerator(const Preprocessor &PP, const std::string &OutputFile, bool Chaining,
const char *isysroot, raw_ostream *Out);
+ ~PCHGenerator();
virtual void InitializeSema(Sema &S) { SemaPtr = &S; }
virtual void HandleTranslationUnit(ASTContext &Ctx);
virtual ASTMutationListener *GetASTMutationListener();
Modified: cfe/trunk/lib/Serialization/GeneratePCH.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/GeneratePCH.cpp?rev=135749&r1=135748&r2=135749&view=diff
==============================================================================
--- cfe/trunk/lib/Serialization/GeneratePCH.cpp (original)
+++ cfe/trunk/lib/Serialization/GeneratePCH.cpp Fri Jul 22 01:03:18 2011
@@ -23,6 +23,8 @@
#include "llvm/Bitcode/BitstreamWriter.h"
#include "llvm/Support/raw_ostream.h"
#include <string>
+#include <string.h>
+#include <stdlib.h>
using namespace clang;
@@ -31,7 +33,7 @@
bool Chaining,
const char *isysroot,
llvm::raw_ostream *OS)
- : PP(PP), OutputFile(OutputFile), isysroot(isysroot), Out(OS), SemaPtr(0),
+ : PP(PP), OutputFile(OutputFile), isysroot(0), Out(OS), SemaPtr(0),
StatCalls(0), Stream(Buffer), Writer(Stream), Chaining(Chaining) {
// Install a stat() listener to keep track of all of the stat()
// calls.
@@ -40,6 +42,13 @@
// *after* the already installed ASTReader's stat cache.
PP.getFileManager().addStatCache(StatCalls,
/*AtBeginning=*/!Chaining);
+
+ if (isysroot)
+ this->isysroot = strdup(isysroot);
+}
+
+PCHGenerator::~PCHGenerator() {
+ free((void*)isysroot);
}
void PCHGenerator::HandleTranslationUnit(ASTContext &Ctx) {
More information about the cfe-commits
mailing list