From 15e4fdf200920c990f3cc271143f43919cd6f27c Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Tue, 25 Feb 2020 16:34:15 +0100 Subject: Replace new/delete in ZMQ input by vector --- src/input/Zmq.cpp | 22 +++++++++++----------- src/input/Zmq.h | 3 ++- 2 files changed, 13 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/input/Zmq.cpp b/src/input/Zmq.cpp index 0a9d59d..603f514 100644 --- a/src/input/Zmq.cpp +++ b/src/input/Zmq.cpp @@ -268,7 +268,6 @@ size_t ZmqBase::readFrame(uint8_t* buffer, size_t size) size_t over_max = m_frame_buffer.size() - m_config.prebuffering; while (over_max--) { - delete[] m_frame_buffer.front(); m_frame_buffer.pop_front(); } } @@ -288,7 +287,6 @@ size_t ZmqBase::readFrame(uint8_t* buffer, size_t size) * frames even though we could drop less. * */ for (int frame_del_count = 0; frame_del_count < 5; frame_del_count++) { - delete[] m_frame_buffer.front(); m_frame_buffer.pop_front(); } } @@ -323,9 +321,11 @@ size_t ZmqBase::readFrame(uint8_t* buffer, size_t size) } else { /* Normal situation, give a frame from the frame_buffer */ - uint8_t* newframe = m_frame_buffer.front(); - memcpy(buffer, newframe, size); - delete[] newframe; + auto& newframe = m_frame_buffer.front(); + if (newframe.size() != size) { + throw logic_error("Inconsistent ZMQ sizes"); + } + memcpy(buffer, newframe.data(), newframe.size()); m_frame_buffer.pop_front(); return size; } @@ -388,9 +388,9 @@ int ZmqMPEG::readFromSocket(size_t framesize) } else if (m_enable_input) { // copy the input frame blockwise into the frame_buffer - auto framedata = new uint8_t[framesize]; - memcpy(framedata, data, framesize); - m_frame_buffer.push_back(framedata); + vector framedata(framesize); + copy(data, data + framesize, framedata.begin()); + m_frame_buffer.push_back(move(framedata)); } else { return 0; @@ -466,9 +466,9 @@ int ZmqAAC::readFromSocket(size_t framesize) for (uint8_t* framestart = data; framestart < &data[5*framesize]; framestart += framesize) { - auto audioframe = new uint8_t[framesize]; - memcpy(audioframe, framestart, framesize); - m_frame_buffer.push_back(audioframe); + vector audioframe(framesize); + copy(framestart, framestart + framesize, audioframe.begin()); + m_frame_buffer.push_back(move(audioframe)); } } else { diff --git a/src/input/Zmq.h b/src/input/Zmq.h index 2e37b5f..f4992f1 100644 --- a/src/input/Zmq.h +++ b/src/input/Zmq.h @@ -45,6 +45,7 @@ #include #include +#include #include #include "zmq.hpp" #include "input/inputs.h" @@ -212,7 +213,7 @@ class ZmqBase : public InputBase, public RemoteControllable { bool m_enable_input; /* stores elements of type char[] */ - std::list m_frame_buffer; + std::list > m_frame_buffer; dab_input_zmq_config_t m_config; -- cgit v1.2.3