aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMooneer Salem <[email protected]>2024-03-28 17:00:28 -0700
committerMooneer Salem <[email protected]>2024-03-28 17:00:28 -0700
commit40758ecf5f86a0345d519ce44b594c7ce3e0fc0e (patch)
tree9d864c53cd779c1aca276d10d84b195ce02559b7
parentb234ee18e47adb5e13336374883756500df49c48 (diff)
Fix remaining leaks and crashes.
-rw-r--r--src/c2sim.c6
-rw-r--r--src/fdmdv_demod.c4
-rw-r--r--src/fdmdv_put_test_bits.c1
-rw-r--r--src/freedv_700.c4
-rw-r--r--src/freedv_fsk.c4
-rw-r--r--src/ofdm_demod.c2
-rw-r--r--unittest/tfreedv_2400A_rawdata.c3
-rw-r--r--unittest/tfreedv_800XA_rawdata.c3
-rw-r--r--unittest/tnewamp1.c5
-rw-r--r--unittest/vq_mbest.c4
10 files changed, 29 insertions, 7 deletions
diff --git a/src/c2sim.c b/src/c2sim.c
index 3117415..18bb15b 100644
--- a/src/c2sim.c
+++ b/src/c2sim.c
@@ -1129,6 +1129,12 @@ int main(int argc, char *argv[]) {
if (fbands != NULL) fclose(fbands);
if (frateKWov != NULL) fclose(frateKWov);
+ codec2_fft_free(fft_fwd_cfg);
+ codec2_fftr_free(fftr_fwd_cfg);
+ codec2_fftr_free(fftr_inv_cfg);
+ codec2_fft_free(phase_fft_fwd_cfg);
+ codec2_fft_free(phase_fft_inv_cfg);
+
return 0;
}
diff --git a/src/fdmdv_demod.c b/src/fdmdv_demod.c
index e3ef8a7..5e29cde 100644
--- a/src/fdmdv_demod.c
+++ b/src/fdmdv_demod.c
@@ -247,8 +247,12 @@ int main(int argc, char *argv[]) {
fclose(fin);
fclose(fout);
+ FREE(rx_bits);
+ FREE(codec_bits);
FREE(rx_fdm_log);
FREE(rx_spec_log);
+ FREE(rx_symbols_log);
+ modem_stats_close(&stats);
fdmdv_destroy(fdmdv);
if (packed_bits != NULL) FREE(packed_bits);
diff --git a/src/fdmdv_put_test_bits.c b/src/fdmdv_put_test_bits.c
index 01bb3f3..a38e152 100644
--- a/src/fdmdv_put_test_bits.c
+++ b/src/fdmdv_put_test_bits.c
@@ -155,6 +155,7 @@ int main(int argc, char *argv[]) {
}
fclose(fin);
+ free(rx_bits);
free(error_pattern);
fdmdv_destroy(fdmdv);
diff --git a/src/freedv_700.c b/src/freedv_700.c
index 3dc4329..50a6956 100644
--- a/src/freedv_700.c
+++ b/src/freedv_700.c
@@ -493,8 +493,8 @@ int freedv_comp_short_rx_ofdm(struct freedv *f, void *demod_in_8kHz,
gp_deinterleave_float(payload_amps_de, payload_amps,
Npayloadsymsperpacket);
- float llr[Npayloadbitsperpacket];
- uint8_t decoded_codeword[Npayloadbitsperpacket];
+ float llr[ldpc->CodeLength * 2];
+ uint8_t decoded_codeword[ldpc->CodeLength * 2];
symbols_to_llrs(llr, payload_syms_de, payload_amps_de, EsNo,
ofdm->mean_amp, Npayloadsymsperpacket);
ldpc_decode_frame(ldpc, &parityCheckCount, &iter, decoded_codeword, llr);
diff --git a/src/freedv_fsk.c b/src/freedv_fsk.c
index dfc7b98..69aa8b9 100644
--- a/src/freedv_fsk.c
+++ b/src/freedv_fsk.c
@@ -59,7 +59,7 @@ void freedv_2400a_open(struct freedv *f) {
f->n_codec_frames = 1;
f->bits_per_codec_frame = codec2_bits_per_frame(f->codec2);
f->bits_per_modem_frame = f->bits_per_codec_frame;
- int n_packed_bytes = (f->bits_per_modem_frame + 7) / 8;
+ int n_packed_bytes = ceil((f->bits_per_modem_frame + 7.0) / 8.0) + 1;
f->tx_payload_bits = MALLOC(n_packed_bytes);
assert(f->tx_payload_bits != NULL);
f->rx_payload_bits = MALLOC(n_packed_bytes);
@@ -123,7 +123,7 @@ void freedv_800xa_open(struct freedv *f) {
f->bits_per_codec_frame = codec2_bits_per_frame(f->codec2);
f->bits_per_modem_frame = f->n_codec_frames * f->bits_per_codec_frame;
- int n_packed_bytes = (f->bits_per_modem_frame + 7) / 8;
+ int n_packed_bytes = ceil((f->bits_per_modem_frame + 7.0) / 8.0) + 1;
f->tx_payload_bits = MALLOC(n_packed_bytes);
assert(f->tx_payload_bits != NULL);
f->rx_payload_bits = MALLOC(n_packed_bytes);
diff --git a/src/ofdm_demod.c b/src/ofdm_demod.c
index b5e9868..c74db4e 100644
--- a/src/ofdm_demod.c
+++ b/src/ofdm_demod.c
@@ -385,7 +385,7 @@ int main(int argc, char *argv[]) {
short rx_scaled[Nmaxsamperframe];
int rx_bits[Nbitsperframe];
- uint8_t rx_bits_char[Nbitsperframe];
+ uint8_t rx_bits_char[Npayloadsymsperpacket * 2];
uint8_t rx_uw[ofdm_nuwbits];
short txt_bits[ofdm_ntxtbits];
diff --git a/unittest/tfreedv_2400A_rawdata.c b/unittest/tfreedv_2400A_rawdata.c
index b81aa47..094c061 100644
--- a/unittest/tfreedv_2400A_rawdata.c
+++ b/unittest/tfreedv_2400A_rawdata.c
@@ -100,6 +100,9 @@ int main(int argc, char **argv) {
}
}
}
+
+ freedv_close(f);
+
if (!frames) {
printf("Did not decode any frames successfully\n");
goto fail;
diff --git a/unittest/tfreedv_800XA_rawdata.c b/unittest/tfreedv_800XA_rawdata.c
index 89c1b59..512e634 100644
--- a/unittest/tfreedv_800XA_rawdata.c
+++ b/unittest/tfreedv_800XA_rawdata.c
@@ -132,6 +132,9 @@ int main(int argc, char **argv) {
}
}
}
+
+ freedv_close(f);
+
if (!frames) {
printf("Did not decode any frames successfully\n");
goto fail;
diff --git a/unittest/tnewamp1.c b/unittest/tnewamp1.c
index 297f12d..213e6b9 100644
--- a/unittest/tnewamp1.c
+++ b/unittest/tnewamp1.c
@@ -287,6 +287,11 @@ int main(int argc, char *argv[]) {
octave_save_complex(fout, "H_c", (COMP *)H, FRAMES, MAX_AMP, MAX_AMP);
fclose(fout);
+ codec2_fft_free(fft_fwd_cfg);
+ codec2_fft_free(phase_fft_fwd_cfg);
+ codec2_fft_free(phase_fft_inv_cfg);
+ nlp_destroy(nlp_states);
+
printf(
"Done! Now run\n octave:1> "
"tnewamp1(\"../path/to/build_linux/src/hts1a\", "
diff --git a/unittest/vq_mbest.c b/unittest/vq_mbest.c
index 62b7e95..6ee33de 100644
--- a/unittest/vq_mbest.c
+++ b/unittest/vq_mbest.c
@@ -221,8 +221,8 @@ void quant_mbest(float vec_out[], int indexes[], float vec_in[], int num_stages,
float err[k], se1;
int i, j, s, s1, ind;
- struct MBEST *mbest_stage[num_stages];
- int index[num_stages];
+ struct MBEST *mbest_stage[MAX_STAGES];
+ int index[MAX_STAGES];
float target[k];
for (i = 0; i < num_stages; i++) {