From: Argyrios Kyrtzidis Date: Mon, 3 Oct 2011 23:43:01 +0000 (+0000) Subject: Make sure SourceManager::getFileIDLoaded doesn't hang in release build because of... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c3b4575b77164fdf008cd4acc330884d56ca500f;p=clang Make sure SourceManager::getFileIDLoaded doesn't hang in release build because of invalid passed parameter. rdar://10210140 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141048 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Basic/SourceManager.cpp b/lib/Basic/SourceManager.cpp index 96a526ad14..a540f3b945 100644 --- a/lib/Basic/SourceManager.cpp +++ b/lib/Basic/SourceManager.cpp @@ -732,6 +732,10 @@ FileID SourceManager::getFileIDLocal(unsigned SLocOffset) const { FileID SourceManager::getFileIDLoaded(unsigned SLocOffset) const { assert(SLocOffset >= CurrentLoadedOffset && "Bad function choice"); + // Sanity checking, otherwise a bug may lead to hanging in release build. + if (SLocOffset < CurrentLoadedOffset) + return FileID(); + // Essentially the same as the local case, but the loaded array is sorted // in the other direction.