diff options
| author | Mooneer Salem <[email protected]> | 2024-03-28 17:00:28 -0700 |
|---|---|---|
| committer | Mooneer Salem <[email protected]> | 2024-03-28 17:00:28 -0700 |
| commit | 40758ecf5f86a0345d519ce44b594c7ce3e0fc0e (patch) | |
| tree | 9d864c53cd779c1aca276d10d84b195ce02559b7 | |
| parent | b234ee18e47adb5e13336374883756500df49c48 (diff) | |
Fix remaining leaks and crashes.
| -rw-r--r-- | src/c2sim.c | 6 | ||||
| -rw-r--r-- | src/fdmdv_demod.c | 4 | ||||
| -rw-r--r-- | src/fdmdv_put_test_bits.c | 1 | ||||
| -rw-r--r-- | src/freedv_700.c | 4 | ||||
| -rw-r--r-- | src/freedv_fsk.c | 4 | ||||
| -rw-r--r-- | src/ofdm_demod.c | 2 | ||||
| -rw-r--r-- | unittest/tfreedv_2400A_rawdata.c | 3 | ||||
| -rw-r--r-- | unittest/tfreedv_800XA_rawdata.c | 3 | ||||
| -rw-r--r-- | unittest/tnewamp1.c | 5 | ||||
| -rw-r--r-- | unittest/vq_mbest.c | 4 |
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++) { |
