kumquat-buildroot/package/kodi-pvr-mediaportal-tvserver/0004-Remove-SAFE_DELETE.patch

290 lines
8.3 KiB
Diff
Raw Normal View History

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