From 720d0d31cdfa91a455d3f24acd92bcf343396646 Mon Sep 17 00:00:00 2001 From: Raymond Knopp Date: Thu, 13 Sep 2018 10:22:20 +0200 Subject: [PATCH] some debugging of memory leaks --- .../PHY/CODING/nrPolar_tools/nr_polar_decoder.c | 12 ++++++++---- openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h | 2 +- .../nrPolar_tools/nr_polar_matrix_and_array.c | 14 +++++++------- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoder.c b/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoder.c index cb75811a11..475fc73a77 100644 --- a/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoder.c +++ b/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoder.c @@ -188,14 +188,15 @@ int8_t polar_decoder( //Keep only the best "listSize" number of entries. if (currentListSize > listSize) { - for (int i = 0; i < 2*listSize; i++) { + for (int i = 0; i < currentListSize; i++) { listIndex[i]=i; pathMetric[i] = dlist[i].pathMetric; } - nr_sort_asc_double_1D_array_ind(pathMetric, listIndex, currentListSize); - for (int i = 0; i < 2*listSize; i++) sorted_dlist[i]=&dlist[listIndex[i]]; + currentListSize = listSize; } + stop_meas(sorting); + /* //sort listIndex[listSize, ..., 2*listSize-1] in descending order. uint8_t swaps, tempInd; @@ -275,7 +276,7 @@ int8_t polar_decoder( } currentListSize = listSize; }*/ - stop_meas(sorting); + } for (int i=0; icrcParityBits; i++) { @@ -298,7 +299,9 @@ int8_t polar_decoder( //perror("[SCL polar decoder] All list entries have failed the CRC checks."); free(d_tilde); for (int i=0;i<2*listSize;i++) { + // printf("error: Freeing dlist[%d].bit %p\n",i,dlist[i].bit); nr_free_uint8_t_2D_array(dlist[i].bit, (polarParams->n+1)); + // printf("error: Freeing dlist[%d].llr %p\n",i,dlist[i].bit); nr_free_double_2D_array(dlist[i].llr, (polarParams->n+1)); free(dlist[i].crcChecksum); } @@ -336,6 +339,7 @@ int8_t polar_decoder( free(d_tilde); for (int i=0;i<2*listSize;i++) { + // printf("correct: Freeing dlist[%d].bit %p\n",i,dlist[i].bit); nr_free_uint8_t_2D_array(dlist[i].bit, (polarParams->n+1)); nr_free_double_2D_array(dlist[i].llr, (polarParams->n+1)); free(dlist[i].crcChecksum); diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h b/openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h index 1faf13e885..b5aa841468 100644 --- a/openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h +++ b/openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h @@ -159,7 +159,7 @@ void updateCrcChecksum2(decoder_list_t **dlist, uint8_t **crcGen, uint8_t listSize, uint32_t i2, uint8_t len); -void nr_sort_asc_double_1D_array_ind(double *matrix, uint8_t *ind, uint8_t len); +void nr_sort_asc_double_1D_array_ind(double *matrix, int *ind, int len); uint8_t **crc24c_generator_matrix(uint16_t payloadSizeBits); uint8_t **crc11_generator_matrix(uint16_t payloadSizeBits); diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_polar_matrix_and_array.c b/openair1/PHY/CODING/nrPolar_tools/nr_polar_matrix_and_array.c index ad37cdbf27..87da27a59f 100644 --- a/openair1/PHY/CODING/nrPolar_tools/nr_polar_matrix_and_array.c +++ b/openair1/PHY/CODING/nrPolar_tools/nr_polar_matrix_and_array.c @@ -130,8 +130,8 @@ void nr_free_uint8_t_3D_array(uint8_t ***input, uint16_t xlen, uint16_t ylen) { } void nr_free_uint8_t_2D_array(uint8_t **input, uint16_t xlen) { - for (int i = 0; i < xlen; i++) free(input[i]); - free(input); + for (int i = 0; i < xlen; i++) free(input[i]); + free(input); } void nr_free_double_2D_array(double **input, uint16_t xlen) { @@ -144,14 +144,14 @@ void nr_free_double_2D_array(double **input, uint16_t xlen) { } // Modified Bubble Sort. -void nr_sort_asc_double_1D_array_ind(double *matrix, uint8_t *ind, uint8_t len) { - uint8_t swaps; +void nr_sort_asc_double_1D_array_ind(double *matrix, int *ind, int len) { + int swaps; double temp; - uint8_t tempInd; + int tempInd; - for (uint8_t i = 0; i < len; i++) { + for (int i = 0; i < len; i++) { swaps = 0; - for (uint8_t j = 0; j < (len - i) - 1; j++) { + for (int j = 0; j < (len - i) - 1; j++) { if (matrix[j] > matrix[j + 1]) { temp = matrix[j]; matrix[j] = matrix[j + 1];