]> gitweb.factorcode.org Git - factor.git/commitdiff
fix problem with bignum-bit? -- return value would be truncated if sizeof(int) !...
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Mon, 23 Feb 2009 01:45:05 +0000 (19:45 -0600)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Mon, 23 Feb 2009 01:45:05 +0000 (19:45 -0600)
vm/bignum.c

index 1f4bc3ce7693f0435c41792bf884422eb5b6cf89..497a4bbf62ffc3990178d9943c42798fb169b885 100644 (file)
@@ -1827,14 +1827,13 @@ int
 bignum_unsigned_logbitp(int shift, bignum_type bignum)
 {
   bignum_length_type len = (BIGNUM_LENGTH (bignum));
-  bignum_digit_type digit;
   int index = shift / BIGNUM_DIGIT_LENGTH;
-  int p;
   if (index >= len)
     return 0;
-  digit = (BIGNUM_REF (bignum, index));
-  p = shift % BIGNUM_DIGIT_LENGTH;
-  return digit & (1 << p);
+  bignum_digit_type digit = (BIGNUM_REF (bignum, index));
+  int p = shift % BIGNUM_DIGIT_LENGTH;
+  bignum_digit_type mask = ((F_FIXNUM)1) << p;
+  return (digit & mask) ? 1 : 0;
 }
 
 /* Allocates memory */