From fac598ebd1e113817f8d36e2847fdbbfac73c6ef Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Wed, 2 Apr 2014 07:45:17 +0000 Subject: [PATCH] Fix memory leak visible apollo driver (nw) --- src/emu/bus/isa/3c505.c | 10 +++++++++- src/emu/bus/isa/3c505.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/emu/bus/isa/3c505.c b/src/emu/bus/isa/3c505.c index 68729479226..fbe229f9e80 100644 --- a/src/emu/bus/isa/3c505.c +++ b/src/emu/bus/isa/3c505.c @@ -473,7 +473,7 @@ void threecom3c505_device::data_buffer_fifo::start( m_size = RX_FIFO_SIZE; // size; for (i = 0; i < m_size; i++) { - m_db[i] = new data_buffer(); + m_db[i] = global_alloc(data_buffer()); m_db[i]->start(device, db_size); } } @@ -485,6 +485,14 @@ void threecom3c505_device::data_buffer_fifo::reset() m_count = 0; } +threecom3c505_device::data_buffer_fifo::~data_buffer_fifo() +{ + for (int i = 0; i < m_size; i++) + { + global_free(m_db[i]); + } +} + int threecom3c505_device::data_buffer_fifo::put(const UINT8 data[], const int length) { UINT16 next_index = (m_put_index + 1) % m_size; diff --git a/src/emu/bus/isa/3c505.h b/src/emu/bus/isa/3c505.h index 6d2993846c7..1c785912e23 100644 --- a/src/emu/bus/isa/3c505.h +++ b/src/emu/bus/isa/3c505.h @@ -175,6 +175,7 @@ private: { public: data_buffer_fifo(); + ~data_buffer_fifo(); void start(threecom3c505_device *device, INT32 size, INT32 db_size); void reset(); int put(const UINT8 data[], const int length);