Skip to content

Commit e7bad18

Browse files
committed
Test: Cmocka: Fixes for math library tests memory leaks
This patch fixes the memory leaks reported by "scripts/run_mocks.sh -v" for the tests for Auditory, DCT, FFT, and matrix library functions tests. Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
1 parent 14ea703 commit e7bad18

4 files changed

Lines changed: 42 additions & 0 deletions

File tree

test/cmocka/src/math/auditory/auditory.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,10 @@ static void filterbank_16_test(const int16_t *fft_real, const int16_t *fft_imag,
126126
fclose(fh);
127127
#endif
128128

129+
free(fb.data);
130+
free(mel_log);
131+
free(fft_out);
132+
free(fft_buf);
129133
assert_true(error_rms < MEL_FB16_MAX_ERROR_RMS);
130134
assert_true(delta_max < MEL_FB16_MAX_ERROR_ABS);
131135
return;
@@ -229,6 +233,10 @@ static void filterbank_32_test(const int32_t *fft_real, const int32_t *fft_imag,
229233
fclose(fh);
230234
#endif
231235

236+
free(fb.data);
237+
free(mel_log);
238+
free(fft_out);
239+
free(fft_buf);
232240
assert_true(error_rms < MEL_FB32_MAX_ERROR_RMS);
233241
assert_true(delta_max < MEL_FB32_MAX_ERROR_ABS);
234242
return;

test/cmocka/src/math/dct/dct.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ static void dct_matrix_16_test(const int16_t *ref, int num_in, int num_out,
6767
printf("Max absolute error = %5.2f (max %5.2f), error RMS = %5.2f (max %5.2f)\n",
6868
delta_max, MATRIX_MULT_16_MAX_ERROR_ABS, error_rms, MATRIX_MULT_16_MAX_ERROR_RMS);
6969

70+
free(dct.matrix);
7071
assert_true(error_rms < MATRIX_MULT_16_MAX_ERROR_RMS);
7172
assert_true(delta_max < MATRIX_MULT_16_MAX_ERROR_ABS);
7273
}

test/cmocka/src/math/fft/fft.c

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,9 @@ static void test_math_fft_256(void **state)
299299
noise += integrate_power_32(out, i + 2, fft_size / 2 - 1);
300300
snr = 10 * log10(signal / noise);
301301
printf("%s: SNR %5.2f dB\n", __func__, snr);
302+
303+
buffer_free(sink);
304+
buffer_free(source);
302305
assert_int_equal(snr < MIN_SNR_256, 0);
303306
}
304307

@@ -341,6 +344,9 @@ static void test_math_fft_512(void **state)
341344
noise += integrate_power_32(out, i + 2, fft_size / 2 - 1);
342345
snr = 10 * log10(signal / noise);
343346
printf("%s: SNR %5.2f dB\n", __func__, snr);
347+
348+
buffer_free(sink);
349+
buffer_free(source);
344350
assert_int_equal(snr < MIN_SNR_512, 0);
345351
}
346352

@@ -383,6 +389,9 @@ static void test_math_fft_1024(void **state)
383389
noise += integrate_power_32(out, i + 2, fft_size / 2 - 1);
384390
snr = 10 * log10(signal / noise);
385391
printf("%s: SNR %5.2f dB\n", __func__, snr);
392+
393+
buffer_free(sink);
394+
buffer_free(source);
386395
assert_int_equal(snr < MIN_SNR_1024, 0);
387396
}
388397

@@ -424,6 +433,10 @@ static void test_math_fft_1024_ifft(void **state)
424433

425434
db = 10 * log10((float)signal / noise);
426435
printf("%s: SNR: %6.2f dB\n", __func__, db);
436+
437+
buffer_free(sink);
438+
buffer_free(intm);
439+
buffer_free(source);
427440
assert_int_equal(db < FFT_DB_TH, 0);
428441
}
429442

@@ -465,6 +478,10 @@ static void test_math_fft_512_2ch(void **state)
465478
i = (SINE_HZ * fft_size) / 48000;
466479
printf("%s: peak for channel 1 at point %d\n", __func__, r);
467480

481+
buffer_free(sink2);
482+
buffer_free(sink1);
483+
buffer_free(source);
484+
468485
/* the peak should be in range i +/-1 */
469486
assert_in_range(r, i - 1, i + 1);
470487
}
@@ -659,6 +676,9 @@ static void test_math_fft_256_16(void **state)
659676
noise += integrate_power_16(out, i + 2, fft_size / 2 - 1);
660677
snr = 10 * log10(signal / noise);
661678
printf("%s: SNR %5.2f dB\n", __func__, snr);
679+
680+
buffer_free(sink);
681+
buffer_free(source);
662682
assert_int_equal(snr < MIN_SNR_256_16, 0);
663683
}
664684

@@ -701,6 +721,9 @@ static void test_math_fft_512_16(void **state)
701721
noise += integrate_power_16(out, i + 2, fft_size / 2 - 1);
702722
snr = 10 * log10(signal / noise);
703723
printf("%s: SNR %5.2f dB\n", __func__, snr);
724+
725+
buffer_free(sink);
726+
buffer_free(source);
704727
assert_int_equal(snr < MIN_SNR_512_16, 0);
705728
}
706729

@@ -743,6 +766,9 @@ static void test_math_fft_1024_16(void **state)
743766
noise += integrate_power_16(out, i + 2, fft_size / 2 - 1);
744767
snr = 10 * log10(signal / noise);
745768
printf("%s: SNR %5.2f dB\n", __func__, snr);
769+
770+
buffer_free(sink);
771+
buffer_free(source);
746772
assert_int_equal(snr < MIN_SNR_1024_16, 0);
747773
}
748774

@@ -783,6 +809,10 @@ static void test_math_fft_1024_ifft_16(void **state)
783809

784810
db = 10 * log10((float)signal / noise);
785811
printf("%s: SNR: %6.2f dB\n", __func__, db);
812+
813+
buffer_free(sink);
814+
buffer_free(intm);
815+
buffer_free(source);
786816
assert_int_equal(db < FFT_DB_TH_16, 0);
787817
}
788818

test/cmocka/src/math/matrix/matrix.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,9 @@ static void matrix_mult_16_test(const int16_t *a_ref, const int16_t *b_ref, cons
8181
printf("Max absolute error = %5.2f (max %5.2f), error RMS = %5.2f (max %5.2f)\n",
8282
delta_max, MATRIX_MULT_16_MAX_ERROR_ABS, error_rms, MATRIX_MULT_16_MAX_ERROR_RMS);
8383

84+
free(c_matrix);
85+
free(b_matrix);
86+
free(a_matrix);
8487
assert_true(error_rms < MATRIX_MULT_16_MAX_ERROR_RMS);
8588
assert_true(delta_max < MATRIX_MULT_16_MAX_ERROR_ABS);
8689
}

0 commit comments

Comments
 (0)