summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2025-12-01 20:00:19 +0100
committerGitHub <noreply@github.com>2025-12-01 20:00:19 +0100
commitefa8439b795331999684b209257efd3d37aede0e (patch)
tree8cec37610a41411f2bb1dca06e15873b9f955118
parent582d5cfe963e9ef1f321dac6eba22483b2de436d (diff)
parent5a6dc310c002a2d9d75cf7de6bc1a984339ef533 (diff)
Merge pull request #14186 from JoshuaVandaele/dit-crash-fix
DITConfiguration: Prevent a crash if images fail to load
-rw-r--r--Source/Core/InputCommon/DynamicInputTextures/DITConfiguration.cpp10
-rw-r--r--Source/Core/InputCommon/ImageOperations.cpp7
2 files changed, 14 insertions, 3 deletions
diff --git a/Source/Core/InputCommon/DynamicInputTextures/DITConfiguration.cpp b/Source/Core/InputCommon/DynamicInputTextures/DITConfiguration.cpp
index cced429e81..9ccd98dbc2 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 907cb52b8d..8fa844fec1 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<ImagePixelData> LoadImage(const std::string& path)
{
File::IOFile file;
- file.Open(path, "rb");
+ if (!file.Open(path, "rb"))
+ return std::nullopt;
+
Common::UniqueBuffer<u8> buffer(file.GetSize());
- file.ReadBytes(buffer.data(), file.GetSize());
+ if (!file.ReadBytes(buffer.data(), file.GetSize()))
+ return std::nullopt;
ImagePixelData image;
Common::UniqueBuffer<u8> data;