From 57b6e74abb5a24cbe31e6770eb55551b74a28694 Mon Sep 17 00:00:00 2001 From: grorp Date: Sun, 12 May 2024 11:46:39 +0200 Subject: [PATCH] Fix crash if zip file cannot be opened (#14636) Helped-by: savilli <78875209+savilli@users.noreply.github.com> --- builtin/mainmenu/content/contentdb.lua | 4 +++- src/filesys.cpp | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/builtin/mainmenu/content/contentdb.lua b/builtin/mainmenu/content/contentdb.lua index eb06c8b61..849f7152d 100644 --- a/builtin/mainmenu/content/contentdb.lua +++ b/builtin/mainmenu/content/contentdb.lua @@ -71,7 +71,9 @@ local function download_and_extract(param) os.remove(filename) if tempfolder == "" then return { - msg = fgettext_ne("Failed to extract \"$1\" (unsupported file type or broken archive)", package.title), + msg = fgettext_ne("Failed to extract \"$1\" " .. + "(insufficient disk space, unsupported file type or broken archive)", + package.title), } end diff --git a/src/filesys.cpp b/src/filesys.cpp index 1ae7f57aa..f7a03617b 100644 --- a/src/filesys.cpp +++ b/src/filesys.cpp @@ -932,6 +932,8 @@ bool extractZipFile(io::IFileSystem *fs, const char *filename, const std::string } irr_ptr opened_zip(zip_loader->createArchive(filename, false, false)); + if (!opened_zip) + return false; const io::IFileList* files_in_zip = opened_zip->getFileList(); for (u32 i = 0; i < files_in_zip->getFileCount(); i++) {