]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Fix mpz_unitstbit compilation with GMP versions < 5.
authorIlya Tumaykin <itumaykin@gmail.com>
Tue, 11 Sep 2012 07:42:47 +0000 (11:42 +0400)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 12 Sep 2012 21:25:16 +0000 (23:25 +0200)
Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
lib/nettle/wmnaf.c

index 778518a9229f7ece94410c92f74ee3e2b942e051..b7eb092f686f92e96f118e46abdce5e7f7c4b189 100644 (file)
 
 #define ABS(x) ((x) >= 0 ? (x) : -(x))
 
+/* GMP lacks this typedef in versions prior to 5 */
+#if __GNU_MP__ < 5
+typedef unsigned long int mp_bitcnt_t;
+#endif
+
 /*
  * A local replacement for mpz_tstbit.
- * It is needed because for negative numbers original mpz_tstbit
- * returns an infinite number of `1`s after all bits of input number.
- * For positive numbers it returns zeros after all bits of input number.
+ * It is needed because original mpz_tstbit process negative numbers
+ * in a two-complement manner and we don't want it.
  * This function mimics mpz_tstbit behavior for positive numbers in both cases.
  */
 static int
-mpz_unitstbit (mpz_srcptr u, mp_bitcnt_t bit_index)
+mpz_unitstbit (mpz_t u, mp_bitcnt_t bit_index)
   __GMP_NOTHROW
 {
-  mp_srcptr u_ptr = (u)->_mp_d;
-  mp_size_t size = (u)->_mp_size;
+  mp_srcptr u_ptr = u->_mp_d;
+  mp_size_t size = u->_mp_size;
   unsigned abs_size = ABS (size);
   mp_size_t limb_index = bit_index / GMP_NUMB_BITS;
   mp_srcptr p = u_ptr + limb_index;