diff options
| author | 2012-09-16 10:35:05 +0000 | |
|---|---|---|
| committer | 2012-09-16 10:35:05 +0000 | |
| commit | 96ebed6493073be4ea3a4281a3bfb01a131f7835 (patch) | |
| tree | 803412fc610e5749f33e5ca57bc250568ffdb5b1 /src | |
| parent | b4304b06e764eec0a917de3b31f670fd4cf9c597 (diff) | |
netlist memory leak fix (no whatsnew)
Diffstat (limited to 'src')
| -rw-r--r-- | src/emu/machine/netlist.c | 7 | ||||
| -rw-r--r-- | src/emu/machine/netlist.h | 4 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/emu/machine/netlist.c b/src/emu/machine/netlist.c index 89efcbc72b4..a0bd2065fb0 100644 --- a/src/emu/machine/netlist.c +++ b/src/emu/machine/netlist.c @@ -430,6 +430,10 @@ netlist_setup_t::netlist_setup_t(netlist_base_t &netlist) netlist_setup_t::~netlist_setup_t() { + for (tagmap_devices_t::entry_t *entry = m_devices.first(); entry != NULL; entry = m_devices.next(entry)) + { + remove_dev(entry->object()->name()); + } } @@ -929,6 +933,9 @@ void netlist_mame_device::device_reset() void netlist_mame_device::device_stop() { m_setup->print_stats(); + + global_free(m_setup); + global_free(m_netlist); } void netlist_mame_device::device_post_load() diff --git a/src/emu/machine/netlist.h b/src/emu/machine/netlist.h index 66533f6612c..ae50b59c058 100644 --- a/src/emu/machine/netlist.h +++ b/src/emu/machine/netlist.h @@ -280,6 +280,10 @@ public: m_ptr = m_list; m_ptr--; } + ~net_list_t() + { + global_free(m_list); + } ATTR_HOT inline void add(const _ListClass elem) { assert(m_ptr-m_list <= _NumElements - 1); |
