[clang] fad6e37 - [Lex] Fix crash during dependency scanning while skipping an unmatched `#if`

Argyrios Kyrtzidis via cfe-commits cfe-commits at lists.llvm.org
Sat May 28 00:01:20 PDT 2022


Author: Argyrios Kyrtzidis
Date: 2022-05-27T23:59:30-07:00
New Revision: fad6e37995b461a7750bdc203aad37eca9532fd5

URL: https://github.com/llvm/llvm-project/commit/fad6e37995b461a7750bdc203aad37eca9532fd5
DIFF: https://github.com/llvm/llvm-project/commit/fad6e37995b461a7750bdc203aad37eca9532fd5.diff

LOG: [Lex] Fix crash during dependency scanning while skipping an unmatched `#if`

Added: 
    clang/test/ClangScanDeps/skipping-unmatched-if.c

Modified: 
    clang/lib/Lex/Lexer.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Lex/Lexer.cpp b/clang/lib/Lex/Lexer.cpp
index a0a7a6ae789b..d4601261b58b 100644
--- a/clang/lib/Lex/Lexer.cpp
+++ b/clang/lib/Lex/Lexer.cpp
@@ -4223,6 +4223,7 @@ bool Lexer::LexDependencyDirectiveTokenWhileSkipping(Token &Result) {
       }
       break;
     case pp_eof:
+      NextDepDirectiveTokenIndex = 0;
       return LexEndOfFile(Result, BufferEnd);
     }
   } while (!Stop);

diff  --git a/clang/test/ClangScanDeps/skipping-unmatched-if.c b/clang/test/ClangScanDeps/skipping-unmatched-if.c
new file mode 100644
index 000000000000..fec7857d6bfd
--- /dev/null
+++ b/clang/test/ClangScanDeps/skipping-unmatched-if.c
@@ -0,0 +1,27 @@
+// Check dependency scanning when skipping an unmatched #if
+
+// RUN: rm -rf %t
+// RUN: split-file %s %t
+// RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
+
+// RUN: not clang-scan-deps -compilation-database %t/cdb.json 2>&1 | FileCheck %s
+// CHECK: header1.h:1:2: error: unterminated conditional directive
+
+//--- cdb.json.template
+[{
+  "directory" : "DIR",
+  "command" : "clang -target x86_64-apple-macosx10.7 -c DIR/test.cpp -o DIR/test.o",
+  "file" : "DIR/test.o"
+}]
+
+//--- test.cpp
+#include "header1.h"
+#include "header2.h"
+
+//--- header1.h
+#if 0
+
+//--- header2.h
+#ifndef _HEADER2_H_
+#define _HEADER2_H_
+#endif


        


More information about the cfe-commits mailing list