diff options
author | Thomas Habets <thomas@habets.se> | 2021-03-02 14:14:55 +0000 |
---|---|---|
committer | mormj <34754695+mormj@users.noreply.github.com> | 2021-03-03 08:28:15 -0500 |
commit | 42dd2c9ccb6128b80b4f2f8c0f5711d8103cfbd6 (patch) | |
tree | 01acd9bfa00e2ddaeded7b34a0cabf21cc811b19 | |
parent | 129a17a01fa12c3b65fc14c54bb08ea5c6817217 (diff) |
dtv: Remove manual memory management
Signed-off-by: Thomas Habets <thomas@habets.se>
-rw-r--r-- | gr-dtv/lib/dvb/dvb_ldpc_bb_impl.cc | 6 | ||||
-rw-r--r-- | gr-dtv/lib/dvb/dvb_ldpc_bb_impl.h | 16 |
2 files changed, 13 insertions, 9 deletions
diff --git a/gr-dtv/lib/dvb/dvb_ldpc_bb_impl.cc b/gr-dtv/lib/dvb/dvb_ldpc_bb_impl.cc index b401dd8d9e..8acd41b962 100644 --- a/gr-dtv/lib/dvb/dvb_ldpc_bb_impl.cc +++ b/gr-dtv/lib/dvb/dvb_ldpc_bb_impl.cc @@ -353,11 +353,7 @@ dvb_ldpc_bb_impl::dvb_ldpc_bb_impl(dvb_standard_t standard, /* * Our virtual destructor. */ -dvb_ldpc_bb_impl::~dvb_ldpc_bb_impl() -{ - delete[] ldpc_lut[0]; - delete[] ldpc_lut; -} +dvb_ldpc_bb_impl::~dvb_ldpc_bb_impl() {} void dvb_ldpc_bb_impl::forecast(int noutput_items, gr_vector_int& ninput_items_required) { diff --git a/gr-dtv/lib/dvb/dvb_ldpc_bb_impl.h b/gr-dtv/lib/dvb/dvb_ldpc_bb_impl.h index 1b43d12eb4..70ad5edc2b 100644 --- a/gr-dtv/lib/dvb/dvb_ldpc_bb_impl.h +++ b/gr-dtv/lib/dvb/dvb_ldpc_bb_impl.h @@ -35,7 +35,8 @@ private: int ldpc_lut_index[FRAME_SIZE_NORMAL]; void ldpc_lookup_generate(void); - uint16_t** ldpc_lut; + std::vector<uint16_t*> ldpc_lut; // Pointers into ldpc_lut_data. + std::vector<uint16_t> ldpc_lut_data; template <typename entry_t, size_t rows, size_t cols> void ldpc_bf(entry_t (&table)[rows][cols]) @@ -75,9 +76,10 @@ private: * see * https://stackoverflow.com/questions/29375797/copy-2d-array-using-memcpy/29375830#29375830 */ - ldpc_lut = new uint16_t*[pbits]; - ldpc_lut[0] = new uint16_t[pbits * max_lut_arraysize]; - ldpc_lut[0][0] = 1; + ldpc_lut.resize(pbits); + ldpc_lut_data.resize(pbits * max_lut_arraysize); + ldpc_lut_data[0] = 1; + ldpc_lut[0] = ldpc_lut_data.data(); for (unsigned int i = 1; i < pbits; i++) { ldpc_lut[i] = ldpc_lut[i - 1] + max_lut_arraysize; ldpc_lut[i][0] = 1; @@ -164,6 +166,12 @@ public: dvb_constellation_t constellation); ~dvb_ldpc_bb_impl() override; + // Disallow copy/move because of the raw pointers. + dvb_ldpc_bb_impl(const dvb_ldpc_bb_impl&) = delete; + dvb_ldpc_bb_impl(dvb_ldpc_bb_impl&&) = delete; + dvb_ldpc_bb_impl& operator=(const dvb_ldpc_bb_impl&) = delete; + dvb_ldpc_bb_impl& operator=(dvb_ldpc_bb_impl&&) = delete; + void forecast(int noutput_items, gr_vector_int& ninput_items_required) override; int general_work(int noutput_items, |