From 85f94874c912e0cc09a69404929b6d7b4f4fc1c6 Mon Sep 17 00:00:00 2001 From: tlatorre Date: Fri, 14 Dec 2018 12:24:24 -0600 Subject: fix another bug in combinations_with_replacement() Also, fix a few memory leaks in test.c. --- src/misc.c | 4 ++-- src/test.c | 13 +++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/misc.c b/src/misc.c index 56760e4..a610944 100644 --- a/src/misc.c +++ b/src/misc.c @@ -726,14 +726,14 @@ void combinations_with_replacement(size_t n, size_t r, size_t *result, size_t *l size_t i, j; size_t *tmp; - tmp = malloc(sizeof(size_t)*n*ipow(n,r)); + tmp = malloc(sizeof(size_t)*r*ipow(n,r)); product(n,r,tmp); *len = 0; for (i = 0; i < ipow(n,r); i++) { if (is_sorted(tmp+i*r,r)) { - for (j = 0; j < n; j++) { + for (j = 0; j < r; j++) { result[(*len)*r+j] = tmp[i*r+j]; } *len += 1; diff --git a/src/test.c b/src/test.c index 85d266b..e1c9e74 100644 --- a/src/test.c +++ b/src/test.c @@ -440,6 +440,7 @@ int test_sno_charge_integral(char *err) err: gsl_integration_cquad_workspace_free(w); + return 1; } @@ -1293,13 +1294,17 @@ int test_time_pdf_norm(char *err) if (!isclose(result, expected, 1e-2, 0)) { sprintf(err, "integral of time_pdf = %.5f, but expected %.5f", result, expected); - return 1; + goto err; } } + gsl_integration_cquad_workspace_free(w); + return 0; err: + gsl_integration_cquad_workspace_free(w); + return 1; } @@ -1351,13 +1356,17 @@ int test_time_cdf(char *err) if (!isclose(result, expected, 1e-2, 0)) { sprintf(err, "integral of time_pdf = %.5f, but expected %.5f", result, expected); - return 1; + goto err; } } + gsl_integration_cquad_workspace_free(w); + return 0; err: + gsl_integration_cquad_workspace_free(w); + return 1; } -- cgit