diff --git a/ChangeLog b/ChangeLog
index 67acec44ad520047c0555a19e6088c8efc56e164..507e0438cfd93a2940b8a13558ae3a539efc7c1d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2023-05-15  Niels Möller  <nisse@lysator.liu.se>
+
+	* eccdata.c (output_bignum_redc): Add missing mpz_clear, reported
+	by Noah Watkins.
+	(output_digits): Delete a gratuitous mpz_init.
+
 2023-05-14  Niels Möller  <nisse@lysator.liu.se>
 
 	* Released nettle-3.9.
diff --git a/eccdata.c b/eccdata.c
index e0726e8d325de006fe6610df8c63673d2e5aff4b..3f8e3f13d6530eaf1552bdcd24a321cd870ce4a3 100644
--- a/eccdata.c
+++ b/eccdata.c
@@ -1074,7 +1074,7 @@ output_digits (const mpz_t x,
   unsigned i;
   const char *suffix;
 
-  mpz_init (t);
+  mpz_init_set (t, x);
   mpz_init (mask);
   mpz_init (limb);
 
@@ -1083,8 +1083,6 @@ output_digits (const mpz_t x,
 
   suffix = bits_per_limb > 32 ? "ULL" : "UL";
 
-  mpz_init_set (t, x);
-
   for (i = 0; i < size; i++)
     {
       if ( (i % 8) == 0)
@@ -1120,6 +1118,7 @@ output_bignum_redc (const char *name, const mpz_t x, const mpz_t p,
   mpz_mul_2exp (t, x, size * bits_per_limb);
   mpz_mod (t, t, p);
   output_bignum (name, t, size, bits_per_limb);
+  mpz_clear (t);
 }
 
 static void