diff options
author | tlatorre <tlatorre@uchicago.edu> | 2018-12-14 12:24:24 -0600 |
---|---|---|
committer | tlatorre <tlatorre@uchicago.edu> | 2018-12-14 12:24:24 -0600 |
commit | 85f94874c912e0cc09a69404929b6d7b4f4fc1c6 (patch) | |
tree | 3ba673f263e990eca664a317fea72edeeeb559e3 | |
parent | 99db8e8e14696bfbf812b655d4a9160500afea11 (diff) | |
download | sddm-85f94874c912e0cc09a69404929b6d7b4f4fc1c6.tar.gz sddm-85f94874c912e0cc09a69404929b6d7b4f4fc1c6.tar.bz2 sddm-85f94874c912e0cc09a69404929b6d7b4f4fc1c6.zip |
fix another bug in combinations_with_replacement()
Also, fix a few memory leaks in test.c.
-rw-r--r-- | src/misc.c | 4 | ||||
-rw-r--r-- | src/test.c | 13 |
2 files changed, 13 insertions, 4 deletions
@@ -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; @@ -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; } |