diff options
author | 2019-09-20 02:26:16 +1000 | |
---|---|---|
committer | 2019-09-20 02:26:16 +1000 | |
commit | 8b233839ba630012026321070d77153fdf5a19b2 (patch) | |
tree | 6eaa5e7bdf8bb413a1abbcce95284917d75d1f76 /src/osd/modules/osdmodule.cpp | |
parent | 37b02ce7de385c5c0a32853e52a861b8ff329077 (diff) |
(nw) get rid of the rest of assert_always - it's better to be explicit about what this thing is supposed to do
Diffstat (limited to 'src/osd/modules/osdmodule.cpp')
-rw-r--r-- | src/osd/modules/osdmodule.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/osd/modules/osdmodule.cpp b/src/osd/modules/osdmodule.cpp index 45664295cfb..75adc5c75bb 100644 --- a/src/osd/modules/osdmodule.cpp +++ b/src/osd/modules/osdmodule.cpp @@ -7,6 +7,9 @@ #include "modules/osdmodule.h" +#include <algorithm> + + osd_module_manager::osd_module_manager() { for (int i=0; i<MAX_MODULES; i++) @@ -25,17 +28,15 @@ osd_module_manager::~osd_module_manager() void osd_module_manager::register_module(const module_type &mod_type) { + auto const slot = std::find(std::begin(m_modules), std::end(m_modules), nullptr); + if (std::end(m_modules) == slot) + throw emu_fatalerror("osd_module_manager::register_module: Module registration beyond MAX_MODULES!"); + osd_module *module = mod_type(); if (module->probe()) { osd_printf_verbose("===> registered module %s %s\n", module->name(), module->type()); - - int i; - for (i = 0; i < MAX_MODULES && m_modules[i] != nullptr; i++) - ; - - assert_always(i < MAX_MODULES, "Module registration beyond MAX_MODULES!"); - m_modules[i] = module; + *slot = module; } else { @@ -51,8 +52,8 @@ bool osd_module_manager::type_has_name(const char *type, const char *name) const osd_module *osd_module_manager::get_module_generic(const char *type, const char *name) { - int i = get_module_index(type, name); - if (i>=0) + int const i = get_module_index(type, name); + if (i >= 0) return m_modules[i]; else return nullptr; |