mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-12-15 19:59:53 +00:00
DITConfiguration: Prevent a crash if images fail to load
Recently came across a strange issue where Dolphin would hard crash in most games with this error: ```sh /usr/include/c++/15.2.1/optional:1165: constexpr const _Tp* std::optional<_Tp>::operator->() const [with _Tp = InputCommon::ImagePixelData]: Assertion 'this->_M_is_engaged()' failed. ``` The culprit turned out to be accessing `host_key_image` which is an `std::optional` thay may return `std::nullopt`. I'm not sure why this issue started occuring for me since I've had no issue with my Dynamic Input Textures in the past? But this fixes a crash if the image fails to load.
This commit is contained in:
parent
e8c512dfb5
commit
5a6dc310c0
@ -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)
|
||||
{
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user