Fix memory leaks in unit tests

This commit is contained in:
Ismael Gomez 2018-05-03 17:36:39 +02:00
parent 3a9f144ff3
commit 4ffee4326b
27 changed files with 68 additions and 16 deletions

View File

@ -286,8 +286,8 @@ int srslte_chest_ul_estimate(srslte_chest_ul_t *q, cf_t *input, cf_t *ce,
if (ce != NULL) {
if (q->smooth_filter_len > 0) {
average_pilots(q, q->pilot_estimates, ce, nrefs_sym, n_prb);
interpolate_pilots(q, ce, nrefs_sym, n_prb);
interpolate_pilots(q, ce, nrefs_sym, n_prb);
/* If averaging, compute noise from difference between received and averaged estimates */
q->noise_estimate = estimate_noise_pilots(q, ce, nrefs_sym, n_prb);
} else {
@ -301,8 +301,7 @@ int srslte_chest_ul_estimate(srslte_chest_ul_t *q, cf_t *input, cf_t *ce,
q->noise_estimate = 0;
}
}
// Estimate received pilot power
// Estimate received pilot power
q->pilot_power = srslte_vec_avg_power_cf(q->pilot_recv_signal, nrefs_sf);
return 0;
}

View File

@ -117,6 +117,7 @@ int main(int argc, char **argv) {
perror("srslte_vec_malloc");
goto do_exit;
}
bzero(ce, num_re*sizeof(cf_t));
if (cell.id == 1000) {
cid = 0;

View File

@ -244,6 +244,7 @@ int main(int argc, char **argv) {
for (j=0;j<coded_length;j++) {
llr_s[j] = (int16_t) (100*llr[j]);
}
/* decoder */
srslte_tdec_reset(&tdec, frame_length);
@ -259,11 +260,12 @@ int main(int argc, char **argv) {
for (int n=0;n<SRSLTE_TDEC_MAX_NPAR;n++) {
if (n < nof_cb) {
input[n] = llr_s;
input[n] = llr_s;
output[n] = data_rx_bytes[n];
} else {
input[n] = NULL;
input[n] = NULL;
output[n] = NULL;
}
output[n] = data_rx_bytes[n];
}
gettimeofday(&tdata[1], NULL);
@ -297,13 +299,18 @@ int main(int argc, char **argv) {
if (errors) {
printf("%d Errors\n", errors/nof_cb);
}
}
}
for (int cb=0;cb<SRSLTE_TDEC_MAX_NPAR;cb++) {
if (data_rx_bytes[cb]) {
free(data_rx_bytes[cb]);
}
}
free(data_tx);
free(symbols);
free(llr);
free(llr_c);
free(llr_s);
free(data_rx);
srslte_tdec_free(&tdec);

View File

@ -278,6 +278,7 @@ int main(int argc, char **argv) {
free(symbols);
free(llr);
free(llr_c);
free(llr_s);
free(data_rx);
free(data_rx2);

View File

@ -513,7 +513,9 @@ void srslte_tdec_simd_decision_byte_cb(srslte_tdec_simd_t * h, uint8_t *output,
void srslte_tdec_simd_decision_byte(srslte_tdec_simd_t * h, uint8_t *output[SRSLTE_TDEC_MAX_NPAR], uint32_t long_cb)
{
for (int i=0;i<h->max_par_cb;i++) {
srslte_tdec_simd_decision_byte_cb(h, output[i], i, long_cb);
if (output[i]) {
srslte_tdec_simd_decision_byte_cb(h, output[i], i, long_cb);
}
}
}

View File

@ -333,5 +333,11 @@ int main(int argc, char **argv) {
}
}
for (i = 0; i < nof_tx_ports; i++) {
if (y[i]) {
free(y[i]);
}
}
exit(ret);
}

View File

@ -232,6 +232,8 @@ int main(int argc, char **argv) {
} while(nread > 0 && frame_cnt < nof_frames);
base_free();
srslte_dft_exit();
if (frame_cnt == 1) {
if (n == 0) {
printf("Could not decode PBCH\n");

View File

@ -144,6 +144,7 @@ int main(int argc, char **argv) {
srslte_vec_fprint_hex(stdout, bch_payload_tx, SRSLTE_BCH_PAYLOAD_LEN);
printf("Rx payload: ");
srslte_vec_fprint_hex(stdout, bch_payload_rx, SRSLTE_BCH_PAYLOAD_LEN);
srslte_dft_exit();
if (nof_rx_ports == cell.nof_ports && !memcmp(bch_payload_rx, bch_payload_tx, sizeof(uint8_t) * SRSLTE_BCH_PAYLOAD_LEN)) {
printf("OK\n");

View File

@ -239,6 +239,7 @@ int main(int argc, char **argv) {
printf("cfi: %d, distance: %f\n", cfi, cfi_corr);
base_free();
srslte_dft_exit();
if (n < 0) {
fprintf(stderr, "Error decoding PCFICH\n");

View File

@ -154,6 +154,7 @@ int main(int argc, char **argv) {
srslte_regs_free(&regs);
cid++;
}
srslte_dft_exit();
for (i=0;i<SRSLTE_MAX_PORTS;i++) {
free(ce[i]);

View File

@ -288,5 +288,6 @@ int main(int argc, char **argv) {
} while (frame_cnt <= max_frames);
base_free();
srslte_dft_exit();
exit(ret);
}

View File

@ -359,5 +359,6 @@ quit:
} else {
printf("Ok\n");
}
srslte_dft_exit();
exit(ret);
}

View File

@ -162,6 +162,7 @@ int main(int argc, char **argv) {
int nof_frames;
int ret;
bool acks[SRSLTE_MAX_TB];
bzero(acks, sizeof(bool)*SRSLTE_MAX_TB);
if (argc < 3) {
usage(argv[0]);
@ -199,6 +200,7 @@ int main(int argc, char **argv) {
} while (nof_frames <= max_frames && ret == 0);
base_free();
srslte_dft_exit();
if (data[0])
free(data[0]);
if (ret > 0) {

View File

@ -546,5 +546,6 @@ quit:
} else {
printf("Ok\n");
}
srslte_dft_exit();
exit(ret);
}

View File

@ -278,6 +278,7 @@ int main(int argc, char **argv) {
}
base_free();
srslte_dft_exit();
if (n < 0) {
fprintf(stderr, "Error decoding phich\n");

View File

@ -215,6 +215,7 @@ int main(int argc, char **argv) {
}
free(slot_symbols[i]);
}
srslte_dft_exit();
printf("OK\n");
exit(0);
}

View File

@ -202,6 +202,7 @@ int main(int argc, char **argv) {
if (data != NULL) {
free(data);
}
srslte_dft_exit();
if (ret > 0) {
exit(0);
} else {

View File

@ -430,6 +430,15 @@ int main(int argc, char **argv) {
ret = SRSLTE_SUCCESS;
quit:
for (i = 0; i < nof_rx_antennas; i++) {
srslte_ofdm_tx_free(&ifft_mbsfn[i]);
srslte_ofdm_rx_free(&fft_mbsfn[i]);
if (rx_sf_symbols[i]) {
free(rx_sf_symbols[i]);
}
}
srslte_pmch_free(&pmch_tx);
srslte_pmch_free(&pmch_rx);
for (i = 0; i < SRSLTE_MAX_CODEWORDS; i++) {
@ -453,6 +462,9 @@ quit:
}
for (i=0;i<SRSLTE_MAX_PORTS;i++) {
if (tx_sf_symbols[i]) {
free(tx_sf_symbols[i]);
}
for (j = 0; j < SRSLTE_MAX_PORTS; j++) {
if (ce[i][j]) {
free(ce[i][j]);

View File

@ -123,6 +123,7 @@ int main(int argc, char **argv) {
srslte_prach_free(p);
free(p);
srslte_dft_exit();
printf("Done\n");
exit(0);

View File

@ -138,7 +138,7 @@ int main(int argc, char **argv) {
srslte_prach_free(p);
free(p);
printf("Done\n");
exit(0);
srslte_dft_exit();
printf("Done\n");
exit(0);
}

View File

@ -235,6 +235,7 @@ int main(int argc, char **argv) {
srslte_rf_close(&rf);
srslte_prach_free(p);
free(p);
srslte_dft_exit();
printf("Done\n");
exit(0);

View File

@ -244,5 +244,6 @@ quit:
} else {
printf("Ok\n");
}
srslte_dft_exit();
exit(ret);
}

View File

@ -295,6 +295,7 @@ quit:
srslte_pusch_free(&pusch_tx);
srslte_pusch_free(&pusch_rx);
srslte_softbuffer_tx_free(&softbuffer_tx);
srslte_softbuffer_rx_free(&softbuffer_rx);
if (sf_symbols) {
free(sf_symbols);
@ -310,5 +311,6 @@ quit:
} else {
printf("Ok\n");
}
srslte_dft_exit();
exit(ret);
}

View File

@ -106,6 +106,7 @@ int main(int argc, char **argv) {
srslte_cfo_free(&cfocorr);
free(input);
free(output);
srslte_dft_exit();
printf("MSE: %f\n", mse);
if (mse > MAX_MSE) {

View File

@ -185,6 +185,7 @@ int main(int argc, char **argv) {
srslte_sync_free(&syncobj);
srslte_ofdm_tx_free(&ifft);
srslte_dft_exit();
printf("Ok\n");
exit(0);

View File

@ -49,26 +49,27 @@ void* write_thread(void *a) {
int main(int argc, char **argv) {
bool result;
msg_queue q;
msg_queue *q = new msg_queue;
byte_buffer_t *b;
pthread_t thread;
args_t args;
u_int32_t r;
result = true;
args.q = &q;
args.q = q;
pthread_create(&thread, NULL, &write_thread, &args);
for(uint32_t i=0;i<NMSGS;i++)
{
q.read(&b);
q->read(&b);
memcpy(&r, b->msg, 4);
delete b;
if(r != i)
result = false;
}
delete q;
pthread_join(thread, NULL);
if(result) {

View File

@ -51,8 +51,11 @@ void nas_test() {
uint8 msg_type;
LIBLTE_BYTE_MSG_STRUCT buf;
LIBLTE_MME_ATTACH_ACCEPT_MSG_STRUCT attach_accept;
bzero(&attach_accept, sizeof(LIBLTE_MME_ATTACH_ACCEPT_MSG_STRUCT));
LIBLTE_MME_ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST_MSG_STRUCT act_def_eps_bearer_context_req;
bzero(&act_def_eps_bearer_context_req, sizeof(LIBLTE_MME_ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST_MSG_STRUCT));
bzero(&buf, sizeof(LIBLTE_BYTE_MSG_STRUCT));
memcpy(buf.msg, nas_message, nas_message_len);
buf.N_bytes = nas_message_len;
liblte_mme_parse_msg_header(&buf, &pd, &msg_type);