aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpierre.baudry <pierre.baudry@diateam.net>2016-10-20 16:30:51 +0200
committerpierre.baudry <pierre.baudry@diateam.net>2016-10-26 08:54:13 +0200
commit9436fbbf3ca0dca427c7cb8792d48dc6db34c55a (patch)
tree484fe71bb388a5c5e5bd1c1b82939b01dd7e5cae
parent93ca09ea61d044e5f8662b28bf084c808cac4f2c (diff)
transceiver: Fix mismatched allocations and deallocations
The behaviour of a mismatched pair of allocation and deallocation is undefined Also fixes a memory leak if malloc fails (which stops the application anyway) Change-Id: I9c8bbade8531e8c9c02dcd43bac38cb954b3c89f
-rw-r--r--Transceiver52M/ChannelizerBase.cpp6
-rw-r--r--Transceiver52M/Resampler.cpp2
-rw-r--r--Transceiver52M/radioBuffer.cpp2
3 files changed, 6 insertions, 4 deletions
diff --git a/Transceiver52M/ChannelizerBase.cpp b/Transceiver52M/ChannelizerBase.cpp
index 1576821..9989940 100644
--- a/Transceiver52M/ChannelizerBase.cpp
+++ b/Transceiver52M/ChannelizerBase.cpp
@@ -80,8 +80,10 @@ bool ChannelizerBase::initFilters()
return false;
subFilters = (float **) malloc(sizeof(float *) * m);
- if (!subFilters)
+ if (!subFilters) {
+ delete[] proto;
return false;
+ }
for (size_t i = 0; i < m; i++) {
subFilters[i] = (float *)
@@ -122,7 +124,7 @@ bool ChannelizerBase::initFilters()
for (size_t i = 0; i < m; i++)
reverse(subFilters[i], hLen);
- delete proto;
+ delete[] proto;
return true;
}
diff --git a/Transceiver52M/Resampler.cpp b/Transceiver52M/Resampler.cpp
index 070adda..8a73b79 100644
--- a/Transceiver52M/Resampler.cpp
+++ b/Transceiver52M/Resampler.cpp
@@ -61,7 +61,7 @@ bool Resampler::initFilters(float bw)
partitions = (float **) malloc(sizeof(float *) * p);
if (!partitions) {
- free(proto);
+ delete[] proto;
return false;
}
diff --git a/Transceiver52M/radioBuffer.cpp b/Transceiver52M/radioBuffer.cpp
index 9e6f079..a2b42c4 100644
--- a/Transceiver52M/radioBuffer.cpp
+++ b/Transceiver52M/radioBuffer.cpp
@@ -47,7 +47,7 @@ RadioBuffer::RadioBuffer(size_t numSegments, size_t segmentLen,
RadioBuffer::~RadioBuffer()
{
- delete buffer;
+ delete[] buffer;
}
void RadioBuffer::reset()