diff options
Diffstat (limited to 'src/emu/devcb.h')
-rw-r--r-- | src/emu/devcb.h | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/emu/devcb.h b/src/emu/devcb.h index 6b16c37b33a..1ac9cd1e37f 100644 --- a/src/emu/devcb.h +++ b/src/emu/devcb.h @@ -899,7 +899,7 @@ public: virtual void validity_check(validity_checker &valid) const override; void resolve(); - void resolve_safe(Result dflt); + bool resolve_safe(Result dflt); Result operator()(address_space &space, offs_t offset = 0, std::make_unsigned_t<Result> mem_mask = DefaultMask); Result operator()(offs_t offset, std::make_unsigned_t<Result> mem_mask = DefaultMask); @@ -958,11 +958,13 @@ void devcb_read<Result, DefaultMask>::resolve() } template <typename Result, std::make_unsigned_t<Result> DefaultMask> -void devcb_read<Result, DefaultMask>::resolve_safe(Result dflt) +bool devcb_read<Result, DefaultMask>::resolve_safe(Result dflt) { resolve(); - if (m_functions.empty()) + bool resolved = !m_functions.empty(); + if (!resolved) m_functions.emplace_back([dflt] (address_space &space, offs_t offset, std::make_unsigned_t<Result> mem_mask) { return dflt; }); + return resolved; } template <typename Result, std::make_unsigned_t<Result> DefaultMask> @@ -2369,7 +2371,7 @@ public: virtual void validity_check(validity_checker &valid) const override; void resolve(); - void resolve_safe(); + bool resolve_safe(); void operator()(address_space &space, offs_t offset, Input data, std::make_unsigned_t<Input> mem_mask = DefaultMask); void operator()(address_space &space, Input data); @@ -2420,11 +2422,13 @@ void devcb_write<Input, DefaultMask>::resolve() } template <typename Input, std::make_unsigned_t<Input> DefaultMask> -void devcb_write<Input, DefaultMask>::resolve_safe() +bool devcb_write<Input, DefaultMask>::resolve_safe() { resolve(); - if (m_functions.empty()) + bool resolved = !m_functions.empty(); + if (!resolved) m_functions.emplace_back([] (address_space &space, offs_t offset, Input data, std::make_unsigned_t<Input> mem_mask) { }); + return resolved; } template <typename Input, std::make_unsigned_t<Input> DefaultMask> |