ArcsinX created this revision. Herald added subscribers: cfe-commits, usaxena95, mstorsjo, kadircet, arphaman, jkorous. Herald added a project: clang. ArcsinX requested review of this revision. Herald added subscribers: MaskRay, ilya-biryukov.
Without this patch `clangd` crashes at try to load compressed string table when `zlib` it not available. Example: - Build `clangd` with MinGW (zlib found) - Build index - Build `clangd` with Visual Studio compiler (zlib not found) - Try to load index Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D87673 Files: clang-tools-extra/clangd/index/Serialization.cpp Index: clang-tools-extra/clangd/index/Serialization.cpp =================================================================== --- clang-tools-extra/clangd/index/Serialization.cpp +++ clang-tools-extra/clangd/index/Serialization.cpp @@ -201,11 +201,13 @@ 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 makeError("Compressed string table, but zlib is unavailable"); } StringTableIn Table;
Index: clang-tools-extra/clangd/index/Serialization.cpp =================================================================== --- clang-tools-extra/clangd/index/Serialization.cpp +++ clang-tools-extra/clangd/index/Serialization.cpp @@ -201,11 +201,13 @@ 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 makeError("Compressed string table, but zlib is unavailable"); } StringTableIn Table;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits