summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Oliver Stöneberg <oliverst@online.de>2014-10-23 11:15:43 +0200
committer Oliver Stöneberg <oliverst@online.de>2014-10-23 11:15:43 +0200
commitf04db035c9ebeb71004ebcf69e13c10064bd95a3 (patch)
treed9a58e8a48fab8807f74f6ad11d3b20e5d9cf2b3
parent2d5eacd0f55ef9546daf5d76df7c3e0c0fabbf01 (diff)
fixed signed integer overflow in address_table::subtable_open() - by O. Galibert (nw)
-rw-r--r--src/emu/memory.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/emu/memory.c b/src/emu/memory.c
index c7440daa24b..b4c49dd3fd5 100644
--- a/src/emu/memory.c
+++ b/src/emu/memory.c
@@ -3435,7 +3435,8 @@ UINT16 *address_table::subtable_open(offs_t l1index)
for (int i=0; i<size; i++)
subptr[i] = subentry;
m_table[l1index] = newentry;
- m_subtable[newentry - SUBTABLE_BASE].m_checksum = (subentry + (subentry << 8) + (subentry << 16) + (subentry << 24)) * ((1 << level2_bits())/4);
+ UINT32 subkey = subentry + (subentry << 8) + (subentry << 16) + (subentry << 24);
+ m_subtable[newentry - SUBTABLE_BASE].m_checksum = subkey * (((1 << level2_bits())/4));
subentry = newentry;
}