Author: Alex Lorenz
Date: 2021-04-26T17:05:22-07:00
New Revision: 2509f9fbad0d37e3e5fea934c0ae7af3877ba4ae

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

LOG: [clang] Don't crash when loading invalid VFS for the module dep collector

The VFS is null when it's invalid so return early in collectVFSFromYAML.

Added: 
    clang/test/VFS/broken-vfs-module-dep.c

Modified: 
    llvm/lib/Support/VirtualFileSystem.cpp

Removed: 
    


################################################################################
diff  --git a/clang/test/VFS/broken-vfs-module-dep.c 
b/clang/test/VFS/broken-vfs-module-dep.c
new file mode 100644
index 0000000000000..2336306de8c6d
--- /dev/null
+++ b/clang/test/VFS/broken-vfs-module-dep.c
@@ -0,0 +1,7 @@
+// RUN: rm -rf %t
+// RUN: mkdir -p %t
+// RUN: not %clang_cc1 -module-dependency-dir %t -ivfsoverlay 
%S/Inputs/invalid-yaml.yaml %s 2>&1 | FileCheck %s
+
+// CHECK: error: Unexpected token
+// CHECK: error: Unexpected token
+// CHECK: 1 error generated

diff  --git a/llvm/lib/Support/VirtualFileSystem.cpp 
b/llvm/lib/Support/VirtualFileSystem.cpp
index deb0f37bd159d..dd820c15ca68e 100644
--- a/llvm/lib/Support/VirtualFileSystem.cpp
+++ b/llvm/lib/Support/VirtualFileSystem.cpp
@@ -2127,6 +2127,8 @@ void 
vfs::collectVFSFromYAML(std::unique_ptr<MemoryBuffer> Buffer,
   std::unique_ptr<RedirectingFileSystem> VFS = RedirectingFileSystem::create(
       std::move(Buffer), DiagHandler, YAMLFilePath, DiagContext,
       std::move(ExternalFS));
+  if (!VFS)
+    return;
   ErrorOr<RedirectingFileSystem::LookupResult> RootResult =
       VFS->lookupPath("/");
   if (!RootResult)


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to