Author: Aleksandr Platonov Date: 2020-09-16T11:05:18+03:00 New Revision: d427df6369f1d229a9f498b4dc621433ada380d2
URL: https://github.com/llvm/llvm-project/commit/d427df6369f1d229a9f498b4dc621433ada380d2 DIFF: https://github.com/llvm/llvm-project/commit/d427df6369f1d229a9f498b4dc621433ada380d2.diff LOG: [clangd] Don't use zlib when it's unavailable. Without this patch `clangd` crashes at try to load compressed string table when `zlib` is not available. Example: - Build `clangd` with MinGW (`zlib` found) - Build index - Build `clangd` with Visual Studio compiler (`zlib` not found) - Try to load index Reviewed By: sammccall, adamcz Differential Revision: https://reviews.llvm.org/D87673 Added: Modified: clang-tools-extra/clangd/index/Serialization.cpp Removed: ################################################################################ diff --git a/clang-tools-extra/clangd/index/Serialization.cpp b/clang-tools-extra/clangd/index/Serialization.cpp index c099a30c4d34..e7f65f087b1c 100644 --- a/clang-tools-extra/clangd/index/Serialization.cpp +++ b/clang-tools-extra/clangd/index/Serialization.cpp @@ -201,12 +201,13 @@ llvm::Expected<StringTableIn> readStringTable(llvm::StringRef Data) { llvm::SmallString<1> UncompressedStorage; if (UncompressedSize == 0) // No compression Uncompressed = R.rest(); - else { + else if (llvm::zlib::isAvailable()) { if (llvm::Error E = llvm::zlib::uncompress(R.rest(), UncompressedStorage, UncompressedSize)) return std::move(E); Uncompressed = UncompressedStorage; - } + } else + return error("Compressed string table, but zlib is unavailable"); StringTableIn Table; llvm::StringSaver Saver(Table.Arena); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits