diff --git a/ChangeLog b/ChangeLog
index b8e8a40dc1897c6bbd5c10c8fd50fd4ac9167774..96fffc0fcd9d1a3f32cc4c1fa92e1f5d8f52a3d4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2014-08-28  Niels Möller  <nisse@lysator.liu.se>
 
+	* ecc-25519.c (ecc_25519_modq): Access q via the ecc struct.
+
 	* ecc-eh-to-a.c (ecc_eh_to_a): Analogous change as for ecc_j_to_a.
 	The modulo q case (op == 2) is hardcoded for curve25519.
 
diff --git a/ecc-25519.c b/ecc-25519.c
index 3c004668735400a0e99e8c4e7f809ed2f47790da..bf27b1c724e6a9ee2554785cb6e210542d98580c 100644
--- a/ecc-25519.c
+++ b/ecc-25519.c
@@ -86,20 +86,18 @@ ecc_25519_modq (const struct ecc_curve *ecc, mp_limb_t *rp)
   /* n is the offset where we add in the next term */
   for (n = ECC_LIMB_SIZE; n-- > 0;)
     {
-      mp_limb_t cy;
-
       cy = mpn_submul_1 (rp + n,
 			 ecc->Bmodq_shifted, ECC_LIMB_SIZE,
 			 rp[n + ECC_LIMB_SIZE]);
       /* Top limb of mBmodq_shifted is zero, so we get cy == 0 or 1 */
       assert (cy < 2);
-      cnd_add_n (cy, rp+n, ecc_q, ECC_LIMB_SIZE);
+      cnd_add_n (cy, rp+n, ecc->q, ECC_LIMB_SIZE);
     }
 
-  cy = mpn_submul_1 (rp, ecc_q, ECC_LIMB_SIZE,
+  cy = mpn_submul_1 (rp, ecc->q, ECC_LIMB_SIZE,
 		     rp[ECC_LIMB_SIZE-1] >> (GMP_NUMB_BITS - QHIGH_BITS));
   assert (cy < 2);
-  cnd_add_n (cy, rp, ecc_q, ECC_LIMB_SIZE);
+  cnd_add_n (cy, rp, ecc->q, ECC_LIMB_SIZE);
 }
 
 /* Needs 2*ecc->size limbs at rp, and 2*ecc->size additional limbs of