summaryrefslogtreecommitdiffstats
path: root/src/emu/image.cpp
diff options
context:
space:
mode:
author AmatCoder <AmatCoder@users.noreply.github.com>2019-07-18 16:14:02 +0200
committer R. Belmont <rb6502@users.noreply.github.com>2019-07-18 10:14:02 -0400
commita14ec2ca5c5613e032159ee1c854a99e19a8e7d7 (patch)
tree739565338a6e30a46ed4c9a7143a541cc8741d0a /src/emu/image.cpp
parent7939bb9b7865e6aed11da705f13a8e1ed9c7206e (diff)
Fix segfault when trying to access some image option that does not exists (#5352)
* emuopts.h: Add method to check if image option exists * image.cpp: Avoid to require image_option if it does not exists
Diffstat (limited to 'src/emu/image.cpp')
-rw-r--r--src/emu/image.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/emu/image.cpp b/src/emu/image.cpp
index 7504fa93ff5..3013d03f668 100644
--- a/src/emu/image.cpp
+++ b/src/emu/image.cpp
@@ -196,7 +196,8 @@ void image_manager::options_extract()
// Note that as a part of #2, we cannot extract the option when the image in question is a part of an
// active reset_on_load; hence the check for is_reset_and_loading() (see issue #2414)
if (!image.is_reset_on_load()
- || (!image.exists() && !image.is_reset_and_loading() && !machine().options().image_option(image.instance_name()).value().empty()))
+ || (!image.exists() && !image.is_reset_and_loading()
+ && machine().options().has_image_option(image.instance_name()) && !machine().options().image_option(image.instance_name()).value().empty()))
{
// we have to assemble the image option differently for software lists and for normal images
std::string image_opt;
@@ -211,7 +212,7 @@ void image_manager::options_extract()
}
// and set the option (provided that it hasn't been removed out from under us)
- if (machine().options().exists(image.instance_name()))
+ if (machine().options().exists(image.instance_name()) && machine().options().has_image_option(image.instance_name()))
machine().options().image_option(image.instance_name()).specify(std::move(image_opt));
}
}