From 00d0d90fdac9257ed02e24677ba4f008f2486c94 Mon Sep 17 00:00:00 2001 From: phunkyfish Date: Wed, 7 Oct 2020 18:00:57 +0100 Subject: [PATCH] Remove SAFE_DELETE Signed-off-by: Bernd Kuhls --- src/lib/tsreader/FileReader.cpp | 9 ++++++++- src/lib/tsreader/MemoryBuffer.cpp | 22 +++++++++++++--------- src/lib/tsreader/MultiFileReader.cpp | 11 ++++++++++- src/lib/tsreader/TSReader.cpp | 25 +++++++++++++++++-------- src/pvrclient-mediaportal.cpp | 27 ++++++++++++++++++--------- src/utils.h | 2 -- 6 files changed, 66 insertions(+), 30 deletions(-) diff --git a/src/lib/tsreader/FileReader.cpp b/src/lib/tsreader/FileReader.cpp index ac8725c..3df22f2 100644 --- a/src/lib/tsreader/FileReader.cpp +++ b/src/lib/tsreader/FileReader.cpp @@ -38,7 +38,6 @@ #include "p8-platform/threads/threads.h" #include //std::min, std::max #include "p8-platform/util/timeutils.h" // for usleep -#include "p8-platform/util/util.h" #include "utils.h" #include @@ -58,6 +57,14 @@ /* calcuate bitrate for file while reading */ #define READ_BITRATE 0x10 +template void SafeDelete(T*& p) +{ + if (p) + { + delete p; + p = nullptr; + } +} namespace MPTV { FileReader::FileReader() : diff --git a/src/lib/tsreader/MemoryBuffer.cpp b/src/lib/tsreader/MemoryBuffer.cpp index 6d411d7..609b575 100644 --- a/src/lib/tsreader/MemoryBuffer.cpp +++ b/src/lib/tsreader/MemoryBuffer.cpp @@ -31,7 +31,6 @@ #include "p8-platform/util/timeutils.h" #include "p8-platform/threads/mutex.h" -#include "p8-platform/util/util.h" #include "MemoryBuffer.h" #include //for kodi::Log #include "TSDebug.h" @@ -59,11 +58,14 @@ void CMemoryBuffer::Clear() P8PLATFORM::CLockObject BufferLock(m_BufferLock); std::vector::iterator it = m_Array.begin(); - for ( ; it != m_Array.end(); ++it ) + for (auto& item : m_Array) { - BufferItem *item = *it; - SAFE_DELETE_ARRAY(item->data); - SAFE_DELETE(item); + if (item) + { + if (item->data) + delete[] item->data; + delete item; + } } m_Array.clear(); @@ -150,8 +152,9 @@ size_t CMemoryBuffer::ReadFromBuffer(unsigned char *pbData, size_t lDataLength) if (item->nOffset >= item->nDataLength) { m_Array.erase(m_Array.begin()); - SAFE_DELETE_ARRAY(item->data); - SAFE_DELETE(item); + if (item->data) + delete[] item->data; + delete item; } } return bytesWritten; @@ -182,8 +185,9 @@ long CMemoryBuffer::PutBuffer(unsigned char *pbData, size_t lDataLength) m_BytesInBuffer -= copyLength; m_Array.erase(m_Array.begin()); - SAFE_DELETE_ARRAY(item2->data); - SAFE_DELETE(item2); + if (item2->data) + delete[] item2->data; + delete item2; } if (m_BytesInBuffer > 0) { diff --git a/src/lib/tsreader/MultiFileReader.cpp b/src/lib/tsreader/MultiFileReader.cpp index b8005b3..3828e06 100644 --- a/src/lib/tsreader/MultiFileReader.cpp +++ b/src/lib/tsreader/MultiFileReader.cpp @@ -48,6 +48,15 @@ using namespace P8PLATFORM; //Maximum time in msec to wait for the buffer file to become available - Needed for DVB radio (this sometimes takes some time) #define MAX_BUFFER_TIMEOUT 1500 +template void SafeDelete(T*& p) +{ + if (p) + { + delete p; + p = nullptr; + } +} + namespace MPTV { MultiFileReader::MultiFileReader() : @@ -484,7 +493,7 @@ namespace MPTV TSDEBUG(ADDON_LOG_DEBUG, "MultiFileReader: Removing file %s\n", file->filename.c_str()); - SAFE_DELETE(file); + SafeDelete(file); m_tsFiles.erase(m_tsFiles.begin()); filesToRemove--; diff --git a/src/lib/tsreader/TSReader.cpp b/src/lib/tsreader/TSReader.cpp index 3f9725b..4a72f4f 100644 --- a/src/lib/tsreader/TSReader.cpp +++ b/src/lib/tsreader/TSReader.cpp @@ -44,6 +44,15 @@ using namespace std; +template void SafeDelete(T*& p) +{ + if (p) + { + delete p; + p = nullptr; + } +} + namespace MPTV { CTsReader::CTsReader() : m_demultiplexer(*this), @@ -69,10 +78,10 @@ namespace MPTV CTsReader::~CTsReader(void) { - SAFE_DELETE(m_fileReader); + SafeDelete(m_fileReader); #ifdef LIVE555 - SAFE_DELETE(m_buffer); - SAFE_DELETE(m_rtspClient); + SafeDelete(m_buffer); + SafeDelete(m_rtspClient); #endif } @@ -225,8 +234,8 @@ namespace MPTV if ( !m_rtspClient->OpenStream(m_fileName.c_str()) ) { - SAFE_DELETE(m_rtspClient); - SAFE_DELETE(m_buffer); + SafeDelete(m_rtspClient); + SafeDelete(m_buffer); return E_FAIL; } @@ -318,8 +327,8 @@ namespace MPTV #ifdef LIVE555 kodi::Log(ADDON_LOG_INFO, "TsReader: closing RTSP client"); m_rtspClient->Stop(); - SAFE_DELETE(m_rtspClient); - SAFE_DELETE(m_buffer); + SafeDelete(m_rtspClient); + SafeDelete(m_buffer); #endif } else @@ -327,7 +336,7 @@ namespace MPTV kodi::Log(ADDON_LOG_INFO, "TsReader: closing file"); m_fileReader->CloseFile(); } - SAFE_DELETE(m_fileReader); + SafeDelete(m_fileReader); m_State = State_Stopped; } } diff --git a/src/pvrclient-mediaportal.cpp b/src/pvrclient-mediaportal.cpp index fdb31e7..5479950 100644 --- a/src/pvrclient-mediaportal.cpp +++ b/src/pvrclient-mediaportal.cpp @@ -42,6 +42,15 @@ int g_iTVServerKodiBuild = 0; #define TVSERVERKODI_RECOMMENDED_VERSION_STRING "1.2.3.122 till 1.20.0.140" #define TVSERVERKODI_RECOMMENDED_VERSION_BUILD 140 +template void SafeDelete(T*& p) +{ + if (p) + { + delete p; + p = nullptr; + } +} + /************************************************************/ /** Class interface */ @@ -75,10 +84,10 @@ cPVRClientMediaPortal::~cPVRClientMediaPortal() kodi::Log(ADDON_LOG_DEBUG, "->~cPVRClientMediaPortal()"); Disconnect(); - SAFE_DELETE(Timer::lifetimeValues); - SAFE_DELETE(m_tcpclient); - SAFE_DELETE(m_genretable); - SAFE_DELETE(m_lastSelectedRecording); + SafeDelete(Timer::lifetimeValues); + SafeDelete(m_tcpclient); + SafeDelete(m_genretable); + SafeDelete(m_lastSelectedRecording); } string cPVRClientMediaPortal::SendCommand(const char* command) @@ -321,7 +330,7 @@ void cPVRClientMediaPortal::Disconnect() if ((CSettings::Get().GetStreamingMethod()==TSReader) && (m_tsreader != NULL)) { m_tsreader->Close(); - SAFE_DELETE(m_tsreader); + SafeDelete(m_tsreader); } SendCommand("StopTimeshift:\n"); } @@ -1748,7 +1757,7 @@ bool cPVRClientMediaPortal::OpenLiveStream(const kodi::addon::PVRChannel& channe m_iCurrentChannel = -1; if (m_tsreader != nullptr) { - SAFE_DELETE(m_tsreader); + SafeDelete(m_tsreader); } return false; } @@ -1959,7 +1968,7 @@ void cPVRClientMediaPortal::CloseLiveStream(void) if (CSettings::Get().GetStreamingMethod() == TSReader && m_tsreader) { m_tsreader->Close(); - SAFE_DELETE(m_tsreader); + SafeDelete(m_tsreader); } result = SendCommand("StopTimeshift:\n"); kodi::Log(ADDON_LOG_INFO, "CloseLiveStream: %s", result.c_str()); @@ -2141,7 +2150,7 @@ void cPVRClientMediaPortal::CloseRecordedStream(void) { kodi::Log(ADDON_LOG_INFO, "CloseRecordedStream: Stop TSReader..."); m_tsreader->Close(); - SAFE_DELETE(m_tsreader); + SafeDelete(m_tsreader); } else { @@ -2409,7 +2418,7 @@ cRecording* cPVRClientMediaPortal::GetRecordingInfo(const kodi::addon::PVRRecord { return m_lastSelectedRecording; } - SAFE_DELETE(m_lastSelectedRecording); + SafeDelete(m_lastSelectedRecording); } if (!IsUp()) diff --git a/src/utils.h b/src/utils.h index 823b46e..d03569a 100644 --- a/src/utils.h +++ b/src/utils.h @@ -11,13 +11,11 @@ #include #include #include "uri.h" -#include "p8-platform/util/util.h" #ifdef TARGET_WINDOWS #include "windows/WindowsUtils.h" #endif - /** * String tokenize * Split string using the given delimiter into a vector of substrings