diff options
author | Thomas Habets <thomas@habets.se> | 2019-12-21 18:36:21 +0000 |
---|---|---|
committer | Marcus Müller <marcus@hostalia.de> | 2020-01-02 23:43:00 +0100 |
commit | 9a2a421a9c54c2dd3fab29e0af9ca5446935d895 (patch) | |
tree | 38f7ccb05e387de8cdfd4e7b5068862c0b48536c | |
parent | 067e336102603ccb0cbf92d3d2a8497f1182618b (diff) |
gr-blocks/file.*: Remove needless memory management
-rw-r--r-- | gr-blocks/lib/file_descriptor_source_impl.cc | 7 | ||||
-rw-r--r-- | gr-blocks/lib/file_descriptor_source_impl.h | 2 | ||||
-rw-r--r-- | gr-blocks/lib/file_meta_source_impl.cc | 13 |
3 files changed, 9 insertions, 13 deletions
diff --git a/gr-blocks/lib/file_descriptor_source_impl.cc b/gr-blocks/lib/file_descriptor_source_impl.cc index 4ecdf5345c..276510056a 100644 --- a/gr-blocks/lib/file_descriptor_source_impl.cc +++ b/gr-blocks/lib/file_descriptor_source_impl.cc @@ -58,7 +58,7 @@ file_descriptor_source_impl::file_descriptor_source_impl(size_t itemsize, d_itemsize(itemsize), d_fd(fd), d_repeat(repeat), - d_residue(new unsigned char[itemsize]), + d_residue(itemsize), d_residue_len(0) { } @@ -66,7 +66,6 @@ file_descriptor_source_impl::file_descriptor_source_impl(size_t itemsize, file_descriptor_source_impl::~file_descriptor_source_impl() { close(d_fd); - delete[] d_residue; } int file_descriptor_source_impl::read_items(char* buf, int nitems) @@ -77,7 +76,7 @@ int file_descriptor_source_impl::read_items(char* buf, int nitems) int nbytes_read = 0; if (d_residue_len > 0) { - memcpy(buf, d_residue, d_residue_len); + memcpy(buf, d_residue.data(), d_residue_len); nbytes_read = d_residue_len; d_residue_len = 0; } @@ -103,7 +102,7 @@ int file_descriptor_source_impl::handle_residue(char* buf, int nbytes_read) d_residue_len = nbytes_read % d_itemsize; if (d_residue_len > 0) { // fprintf (stderr, "handle_residue: %d\n", d_residue_len); - memcpy(d_residue, buf + nbytes_read - d_residue_len, d_residue_len); + memcpy(d_residue.data(), buf + nbytes_read - d_residue_len, d_residue_len); } return nitems_read; } diff --git a/gr-blocks/lib/file_descriptor_source_impl.h b/gr-blocks/lib/file_descriptor_source_impl.h index e0f49bfd9d..b058fe1918 100644 --- a/gr-blocks/lib/file_descriptor_source_impl.h +++ b/gr-blocks/lib/file_descriptor_source_impl.h @@ -35,7 +35,7 @@ private: int d_fd; bool d_repeat; - unsigned char* d_residue; + std::vector<unsigned char> d_residue; unsigned long d_residue_len; protected: diff --git a/gr-blocks/lib/file_meta_source_impl.cc b/gr-blocks/lib/file_meta_source_impl.cc index 6637420981..4f4c0620a7 100644 --- a/gr-blocks/lib/file_meta_source_impl.cc +++ b/gr-blocks/lib/file_meta_source_impl.cc @@ -116,11 +116,10 @@ bool file_meta_source_impl::read_header(pmt::pmt_t& hdr, pmt::pmt_t& extras) size_t ret; size_t size = 0; std::string str; - char* hdr_buffer = new char[METADATA_HEADER_SIZE]; + std::vector<char> hdr_buffer(METADATA_HEADER_SIZE); while (size < METADATA_HEADER_SIZE) { ret = fread(&hdr_buffer[size], sizeof(char), METADATA_HEADER_SIZE - size, fp); if (ret == 0) { - delete[] hdr_buffer; if (feof(fp)) return false; else { @@ -134,9 +133,9 @@ bool file_meta_source_impl::read_header(pmt::pmt_t& hdr, pmt::pmt_t& extras) } // Convert to string or the char array gets confused by the \0 - str.insert(0, hdr_buffer, METADATA_HEADER_SIZE); + str.insert(0, hdr_buffer.data(), METADATA_HEADER_SIZE); hdr = pmt::deserialize_str(str); - delete[] hdr_buffer; + hdr_buffer.clear(); uint64_t seg_start, extra_len = 0; pmt::pmt_t r, dump; @@ -148,11 +147,10 @@ bool file_meta_source_impl::read_header(pmt::pmt_t& hdr, pmt::pmt_t& extras) if (extra_len > 0) { size = 0; - hdr_buffer = new char[extra_len]; + hdr_buffer.resize(extra_len); while (size < extra_len) { ret = fread(&hdr_buffer[size], sizeof(char), extra_len - size, fp); if (ret == 0) { - delete[] hdr_buffer; if (feof(fp)) return false; else { @@ -166,9 +164,8 @@ bool file_meta_source_impl::read_header(pmt::pmt_t& hdr, pmt::pmt_t& extras) } str.clear(); - str.insert(0, hdr_buffer, extra_len); + str.insert(0, hdr_buffer.data(), extra_len); extras = pmt::deserialize_str(str); - delete[] hdr_buffer; } return true; |