From: Richard Smith Date: Tue, 14 Aug 2012 04:19:29 +0000 (+0000) Subject: Fix undefined behavior: don't bind a dereferenced null pointer to a reference. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=00aae5243d965aa7bcee81a39ba0900c7869be21;p=clang Fix undefined behavior: don't bind a dereferenced null pointer to a reference. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161832 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/Diagnostic.h b/include/clang/Basic/Diagnostic.h index 8b4d3a0b60..3997fb89ba 100644 --- a/include/clang/Basic/Diagnostic.h +++ b/include/clang/Basic/Diagnostic.h @@ -267,16 +267,14 @@ private: } void PushDiagStatePoint(DiagState *State, SourceLocation L) { - FullSourceLoc Loc(L, *SourceMgr); + FullSourceLoc Loc(L, getSourceManager()); // Make sure that DiagStatePoints is always sorted according to Loc. - assert((Loc.isValid() || DiagStatePoints.empty()) && - "Adding invalid loc point after another point"); - assert((Loc.isInvalid() || DiagStatePoints.empty() || - DiagStatePoints.back().Loc.isInvalid() || + assert(Loc.isValid() && "Adding invalid loc point"); + assert(!DiagStatePoints.empty() && + (DiagStatePoints.back().Loc.isInvalid() || DiagStatePoints.back().Loc.isBeforeInTranslationUnitThan(Loc)) && "Previous point loc comes after or is the same as new one"); - DiagStatePoints.push_back(DiagStatePoint(State, - FullSourceLoc(Loc, *SourceMgr))); + DiagStatePoints.push_back(DiagStatePoint(State, Loc)); } /// \brief Finds the DiagStatePoint that contains the diagnostic state of diff --git a/lib/Basic/Diagnostic.cpp b/lib/Basic/Diagnostic.cpp index 60feb75c1c..e68950200f 100644 --- a/lib/Basic/Diagnostic.cpp +++ b/lib/Basic/Diagnostic.cpp @@ -119,7 +119,7 @@ void DiagnosticsEngine::Reset() { // Create a DiagState and DiagStatePoint representing diagnostic changes // through command-line. DiagStates.push_back(DiagState()); - PushDiagStatePoint(&DiagStates.back(), SourceLocation()); + DiagStatePoints.push_back(DiagStatePoint(&DiagStates.back(), FullSourceLoc())); } void DiagnosticsEngine::SetDelayedDiagnostic(unsigned DiagID, StringRef Arg1,