From 00d0d90fdac9257ed02e24677ba4f008f2486c94 Mon Sep 17 00:00:00 2001
From: phunkyfish <phunkyfish@gmail.com>
Date: Wed, 7 Oct 2020 18:00:57 +0100
Subject: [PATCH] Remove SAFE_DELETE

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
---
 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 <algorithm> //std::min, std::max
 #include "p8-platform/util/timeutils.h" // for usleep
-#include "p8-platform/util/util.h"
 #include "utils.h"
 #include <errno.h>
 
@@ -58,6 +57,14 @@
 /* calcuate bitrate for file while reading */
 #define READ_BITRATE   0x10
 
+template<typename T> 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 <kodi/General.h> //for kodi::Log
 #include "TSDebug.h"
@@ -59,11 +58,14 @@ void CMemoryBuffer::Clear()
   P8PLATFORM::CLockObject BufferLock(m_BufferLock);
   std::vector<BufferItem *>::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<typename T> 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<typename T> 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<typename T> 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 <vector>
 #include <ctime>
 #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
