]> granicus.if.org Git - clang/commitdiff
Check if 'Unit' is NULL before trying to iterate over the diagnostics.
authorTed Kremenek <kremenek@apple.com>
Fri, 5 Mar 2010 22:43:29 +0000 (22:43 +0000)
committerTed Kremenek <kremenek@apple.com>
Fri, 5 Mar 2010 22:43:29 +0000 (22:43 +0000)
This obviates a null dereference that can occur when 'NumErrors'
is not zero.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97849 91177308-0d34-0410-b5e6-96231b3b80d8

tools/CIndex/CIndex.cpp

index f07b94fc51d41ceb97a0cbf853a85e604e4848bf..07bb7fbd83efc331169d6767a1136c9dba03818a 100644 (file)
@@ -1003,7 +1003,8 @@ clang_createTranslationUnitFromSourceFile(CXIndex CIdx,
     // FIXME: Until we have broader testing, just drop the entire AST if we
     // encountered an error.
     if (NumErrors != Diags->getNumErrors()) {
-      if (CXXIdx->getDisplayDiagnostics()) {
+      // Make sure to check that 'Unit' is non-NULL.
+      if (CXXIdx->getDisplayDiagnostics() && Unit.get()) {
         for (ASTUnit::diag_iterator D = Unit->diag_begin(), 
                                  DEnd = Unit->diag_end();
              D != DEnd; ++D) {