diff --git a/Source/Core/InputCommon/DynamicInputTextures/DITConfiguration.cpp b/Source/Core/InputCommon/DynamicInputTextures/DITConfiguration.cpp index cced429e810..9ccd98dbc24 100644 --- a/Source/Core/InputCommon/DynamicInputTextures/DITConfiguration.cpp +++ b/Source/Core/InputCommon/DynamicInputTextures/DITConfiguration.cpp @@ -150,7 +150,15 @@ void Configuration::GenerateTexture(const Common::IniFile& file, } else { - const auto host_key_image = LoadImage(m_base_path + input_image_iter->second); + const std::string full_image_path = m_base_path + input_image_iter->second; + const auto host_key_image = LoadImage(full_image_path); + if (!host_key_image) + { + ERROR_LOG_FMT(VIDEO, + "Failed to load image '{}' needed for dynamic input texture generation", + full_image_path); + continue; + } for (const auto& rect : rects) { diff --git a/Source/Core/InputCommon/ImageOperations.cpp b/Source/Core/InputCommon/ImageOperations.cpp index 907cb52b8dc..8fa844fec17 100644 --- a/Source/Core/InputCommon/ImageOperations.cpp +++ b/Source/Core/InputCommon/ImageOperations.cpp @@ -45,9 +45,12 @@ void CopyImageRegion(const ImagePixelData& src, ImagePixelData& dst, const Rect& std::optional LoadImage(const std::string& path) { File::IOFile file; - file.Open(path, "rb"); + if (!file.Open(path, "rb")) + return std::nullopt; + Common::UniqueBuffer buffer(file.GetSize()); - file.ReadBytes(buffer.data(), file.GetSize()); + if (!file.ReadBytes(buffer.data(), file.GetSize())) + return std::nullopt; ImagePixelData image; Common::UniqueBuffer data;