summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Habets <thomas@habets.se>2019-12-21 18:36:21 +0000
committerMarcus Müller <marcus@hostalia.de>2020-01-02 23:43:00 +0100
commit9a2a421a9c54c2dd3fab29e0af9ca5446935d895 (patch)
tree38f7ccb05e387de8cdfd4e7b5068862c0b48536c
parent067e336102603ccb0cbf92d3d2a8497f1182618b (diff)
gr-blocks/file.*: Remove needless memory management
-rw-r--r--gr-blocks/lib/file_descriptor_source_impl.cc7
-rw-r--r--gr-blocks/lib/file_descriptor_source_impl.h2
-rw-r--r--gr-blocks/lib/file_meta_source_impl.cc13
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;