summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/emumem_hedw.ipp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/emumem_hedw.ipp')
-rw-r--r--src/emu/emumem_hedw.ipp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/emu/emumem_hedw.ipp b/src/emu/emumem_hedw.ipp
index dcd506d4f33..ec624d575b1 100644
--- a/src/emu/emumem_hedw.ipp
+++ b/src/emu/emumem_hedw.ipp
@@ -141,7 +141,7 @@ template<int HighBits, int Width, int AddrShift, endianness_t Endian> void handl
template<int HighBits, int Width, int AddrShift, endianness_t Endian> void handler_entry_write_dispatch<HighBits, Width, AddrShift, Endian>::range_cut_before(offs_t address, int start)
{
- while(--start >= 0) {
+ while(--start >= 0 && m_u_dispatch[start]) {
if(int(LowBits) > -AddrShift && m_u_dispatch[start]->is_dispatch()) {
static_cast<handler_entry_write_dispatch<LowBits, Width, AddrShift, Endian> *>(m_u_dispatch[start])->range_cut_before(address);
break;
@@ -154,7 +154,7 @@ template<int HighBits, int Width, int AddrShift, endianness_t Endian> void handl
template<int HighBits, int Width, int AddrShift, endianness_t Endian> void handler_entry_write_dispatch<HighBits, Width, AddrShift, Endian>::range_cut_after(offs_t address, int start)
{
- while(++start < COUNT) {
+ while(++start < COUNT && m_u_dispatch[start]) {
if(int(LowBits) > -AddrShift && m_u_dispatch[start]->is_dispatch()) {
static_cast<handler_entry_write_dispatch<LowBits, Width, AddrShift, Endian> *>(m_u_dispatch[start])->range_cut_after(address);
break;
@@ -618,10 +618,11 @@ template<int HighBits, int Width, int AddrShift, endianness_t Endian> void handl
m_u_ranges = m_ranges_array[i].data();
m_u_dispatch = m_dispatch_array[i].data();
- for(u32 entry = 0; entry != COUNT; entry++) {
- m_u_dispatch[entry] = m_dispatch_array[0][entry]->dup();
- m_u_ranges[entry] = m_ranges_array[0][entry];
- }
+ for(u32 entry = 0; entry != COUNT; entry++)
+ if(m_dispatch_array[0][entry]) {
+ m_u_dispatch[entry] = m_dispatch_array[0][entry]->dup();
+ m_u_ranges[entry] = m_ranges_array[0][entry];
+ }
} else {
m_u_ranges = m_ranges_array[i].data();