diff --git a/Source/Core/Core/HW/BBA-TAP/TAP_Apple.cpp b/Source/Core/Core/HW/BBA-TAP/TAP_Apple.cpp index 06f20cd0e9..bd0e3e9860 100644 --- a/Source/Core/Core/HW/BBA-TAP/TAP_Apple.cpp +++ b/Source/Core/Core/HW/BBA-TAP/TAP_Apple.cpp @@ -75,14 +75,14 @@ static void ReadThreadHandler(CEXIETHERNET* self) if (select(self->fd + 1, &rfds, nullptr, nullptr, &timeout) <= 0) continue; - int readBytes = read(self->fd, self->mRecvBuffer, BBA_RECV_SIZE); + int readBytes = read(self->fd, self->mRecvBuffer.get(), BBA_RECV_SIZE); if (readBytes < 0) { ERROR_LOG(SP1, "Failed to read from BBA, err=%d", readBytes); } else if (self->readEnabled.IsSet()) { - INFO_LOG(SP1, "Read data: %s", ArrayToString(self->mRecvBuffer, readBytes, 0x10).c_str()); + INFO_LOG(SP1, "Read data: %s", ArrayToString(self->mRecvBuffer.get(), readBytes, 0x10).c_str()); self->mRecvBufferLength = readBytes; self->RecvHandlePacket(); } diff --git a/Source/Core/Core/HW/BBA-TAP/TAP_Unix.cpp b/Source/Core/Core/HW/BBA-TAP/TAP_Unix.cpp index 1af7b3d2f7..a44a8968f7 100644 --- a/Source/Core/Core/HW/BBA-TAP/TAP_Unix.cpp +++ b/Source/Core/Core/HW/BBA-TAP/TAP_Unix.cpp @@ -137,14 +137,14 @@ static void ReadThreadHandler(CEXIETHERNET* self) if (select(self->fd + 1, &rfds, nullptr, nullptr, &timeout) <= 0) continue; - int readBytes = read(self->fd, self->mRecvBuffer, BBA_RECV_SIZE); + int readBytes = read(self->fd, self->mRecvBuffer.get(), BBA_RECV_SIZE); if (readBytes < 0) { ERROR_LOG(SP1, "Failed to read from BBA, err=%d", readBytes); } else if (self->readEnabled.IsSet()) { - INFO_LOG(SP1, "Read data: %s", ArrayToString(self->mRecvBuffer, readBytes, 0x10).c_str()); + INFO_LOG(SP1, "Read data: %s", ArrayToString(self->mRecvBuffer.get(), readBytes, 0x10).c_str()); self->mRecvBufferLength = readBytes; self->RecvHandlePacket(); } diff --git a/Source/Core/Core/HW/BBA-TAP/TAP_Win32.cpp b/Source/Core/Core/HW/BBA-TAP/TAP_Win32.cpp index 96e061c8b4..37b55c212a 100644 --- a/Source/Core/Core/HW/BBA-TAP/TAP_Win32.cpp +++ b/Source/Core/Core/HW/BBA-TAP/TAP_Win32.cpp @@ -270,7 +270,7 @@ static void ReadThreadHandler(CEXIETHERNET* self) DWORD transferred; // Read from TAP into internal buffer. - if (ReadFile(self->mHAdapter, self->mRecvBuffer, BBA_RECV_SIZE, &transferred, &self->mReadOverlapped)) + if (ReadFile(self->mHAdapter, self->mRecvBuffer.get(), BBA_RECV_SIZE, &transferred, &self->mReadOverlapped)) { // Returning immediately is not likely to happen, but if so, reset the event state manually. ResetEvent(self->mReadOverlapped.hEvent); @@ -298,7 +298,7 @@ static void ReadThreadHandler(CEXIETHERNET* self) } // Copy to BBA buffer, and fire interrupt if enabled. - DEBUG_LOG(SP1, "Received %u bytes\n: %s", transferred, ArrayToString(self->mRecvBuffer, transferred, 0x10).c_str()); + DEBUG_LOG(SP1, "Received %u bytes\n: %s", transferred, ArrayToString(self->mRecvBuffer.get(), transferred, 0x10).c_str()); if (self->readEnabled.IsSet()) { self->mRecvBufferLength = transferred; diff --git a/Source/Core/Core/HW/EXI_DeviceEthernet.cpp b/Source/Core/Core/HW/EXI_DeviceEthernet.cpp index 7a0b2b7f65..76cf3aea72 100644 --- a/Source/Core/Core/HW/EXI_DeviceEthernet.cpp +++ b/Source/Core/Core/HW/EXI_DeviceEthernet.cpp @@ -20,10 +20,10 @@ CEXIETHERNET::CEXIETHERNET() { - tx_fifo = new u8[BBA_TXFIFO_SIZE]; - mBbaMem = new u8[BBA_MEM_SIZE]; + tx_fifo = std::make_unique(BBA_TXFIFO_SIZE); + mBbaMem = std::make_unique(BBA_MEM_SIZE); - mRecvBuffer = new u8[BBA_RECV_SIZE]; + mRecvBuffer = std::make_unique(BBA_RECV_SIZE); mRecvBufferLength = 0; MXHardReset(); @@ -58,10 +58,6 @@ CEXIETHERNET::CEXIETHERNET() CEXIETHERNET::~CEXIETHERNET() { Deactivate(); - - delete[] tx_fifo; - delete[] mBbaMem; - delete[] mRecvBuffer; } void CEXIETHERNET::SetCS(int cs) @@ -206,8 +202,8 @@ void CEXIETHERNET::DMARead(u32 addr, u32 size) void CEXIETHERNET::DoState(PointerWrap &p) { - p.DoArray(tx_fifo, BBA_TXFIFO_SIZE); - p.DoArray(mBbaMem, BBA_MEM_SIZE); + p.DoArray(tx_fifo.get(), BBA_TXFIFO_SIZE); + p.DoArray(mBbaMem.get(), BBA_MEM_SIZE); } bool CEXIETHERNET::IsMXCommand(u32 const data) @@ -298,7 +294,7 @@ const char* CEXIETHERNET::GetRegisterName() const void CEXIETHERNET::MXHardReset() { - memset(mBbaMem, 0, BBA_MEM_SIZE); + memset(mBbaMem.get(), 0, BBA_MEM_SIZE); mBbaMem[BBA_NCRB] = NCRB_PR; mBbaMem[BBA_NWAYC] = NWAYC_LTE | NWAYC_ANE; @@ -384,7 +380,7 @@ void CEXIETHERNET::DirectFIFOWrite(u8 *data, u32 size) u16 *tx_fifo_count = (u16 *)&mBbaMem[BBA_TXFIFOCNT]; - memcpy(tx_fifo + *tx_fifo_count, data, size); + memcpy(tx_fifo.get() + *tx_fifo_count, data, size); *tx_fifo_count += size; // TODO: not sure this mask is correct. @@ -395,7 +391,7 @@ void CEXIETHERNET::DirectFIFOWrite(u8 *data, u32 size) void CEXIETHERNET::SendFromDirectFIFO() { - SendFrame(tx_fifo, *(u16 *)&mBbaMem[BBA_TXFIFOCNT]); + SendFrame(tx_fifo.get(), *(u16 *)&mBbaMem[BBA_TXFIFOCNT]); } void CEXIETHERNET::SendFromPacketBuffer() @@ -452,9 +448,9 @@ inline bool CEXIETHERNET::RecvMACFilter() // Unicast? if ((mRecvBuffer[0] & 0x01) == 0) { - return memcmp(mRecvBuffer, &mBbaMem[BBA_NAFR_PAR0], 6) == 0; + return memcmp(mRecvBuffer.get(), &mBbaMem[BBA_NAFR_PAR0], 6) == 0; } - else if (memcmp(mRecvBuffer, broadcast, 6) == 0) + else if (memcmp(mRecvBuffer.get(), broadcast, 6) == 0) { // Accept broadcast? return !!(mBbaMem[BBA_NCRB] & NCRB_AB); @@ -467,7 +463,7 @@ inline bool CEXIETHERNET::RecvMACFilter() else { // Lookup the dest eth address in the hashmap - u16 index = HashIndex(mRecvBuffer); + u16 index = HashIndex(mRecvBuffer.get()); return !!(mBbaMem[BBA_NAFR_MAR0 + index / 8] & (1 << (index % 8))); } } diff --git a/Source/Core/Core/HW/EXI_DeviceEthernet.h b/Source/Core/Core/HW/EXI_DeviceEthernet.h index 59a72224d5..d5ea42ffaa 100644 --- a/Source/Core/Core/HW/EXI_DeviceEthernet.h +++ b/Source/Core/Core/HW/EXI_DeviceEthernet.h @@ -310,8 +310,8 @@ public: void inc_rwp(); bool RecvHandlePacket(); - u8 *tx_fifo; - u8 *mBbaMem; + std::unique_ptr mBbaMem; + std::unique_ptr tx_fifo; // TAP interface bool Activate(); @@ -322,7 +322,7 @@ public: void RecvStart(); void RecvStop(); - u8 *mRecvBuffer; + std::unique_ptr mRecvBuffer; u32 mRecvBufferLength; #if defined(_WIN32)