From 0355cfad41931c5583e391bfcd2deb806a6d7f5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se> Date: Thu, 12 Jul 2018 22:37:36 +0200 Subject: [PATCH] Fix at-exit leak in eratosthenes program. --- ChangeLog | 3 +++ examples/eratosthenes.c | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index ccf82494..0dbacaa0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2018-07-12 Niels Möller <nisse@lysator.liu.se> + * examples/eratosthenes.c (main): Don't allocate bitmap storage + for limit == 2 (early exit), closing memory leak at exit. + * eccdata.c (output_curve): Replace mpz_init_set_ui by mpz_set_ui, to fix memory leak. (ecc_curve_clear): New function. diff --git a/examples/eratosthenes.c b/examples/eratosthenes.c index 7a54561d..415c6d25 100644 --- a/examples/eratosthenes.c +++ b/examples/eratosthenes.c @@ -314,8 +314,6 @@ main (int argc, char **argv) root = (root - 1) | 1; /* Represents odd numbers from 3 up. */ sieve_nbits = (root - 1) / 2; - sieve = vector_alloc(sieve_nbits ); - vector_init(sieve, sieve_nbits); if (verbose) fprintf(stderr, "Initial sieve using %lu bits.\n", sieve_nbits); @@ -326,6 +324,9 @@ main (int argc, char **argv) if (limit == 2) return EXIT_SUCCESS; + sieve = vector_alloc(sieve_nbits); + vector_init(sieve, sieve_nbits); + for (bit = 0; bit < sieve_nbits; bit = vector_find_next(sieve, bit + 1, sieve_nbits)) -- GitLab