fix bitwise-bit-field for 64-bit build (PR 10502)
svn: r16232
This commit is contained in:
parent
818c4b0409
commit
f70e7e3385
|
@ -2679,7 +2679,7 @@ static Scheme_Object *bitwise_bit_field (int argc, Scheme_Object *argv[])
|
||||||
if (SCHEME_INTP(so)) {
|
if (SCHEME_INTP(so)) {
|
||||||
if (v1 < (sizeof(long) * 8)) {
|
if (v1 < (sizeof(long) * 8)) {
|
||||||
long res;
|
long res;
|
||||||
res = ((SCHEME_INT_VAL(so) >> v1) & ((1 << v2) - 1));
|
res = ((SCHEME_INT_VAL(so) >> v1) & (((long)1 << v2) - 1));
|
||||||
return scheme_make_integer(res);
|
return scheme_make_integer(res);
|
||||||
} else if (SCHEME_INT_VAL(so) > 0)
|
} else if (SCHEME_INT_VAL(so) > 0)
|
||||||
return scheme_make_integer(0);
|
return scheme_make_integer(0);
|
||||||
|
@ -2698,7 +2698,7 @@ static Scheme_Object *bitwise_bit_field (int argc, Scheme_Object *argv[])
|
||||||
/* Pull in more bits from next digit: */
|
/* Pull in more bits from next digit: */
|
||||||
d |= (((Scheme_Bignum *)so)->digits[vd + 1] << avail);
|
d |= (((Scheme_Bignum *)so)->digits[vd + 1] << avail);
|
||||||
}
|
}
|
||||||
d = (d & ((1 << v2) - 1));
|
d = (d & (((bigdig)1 << v2) - 1));
|
||||||
return scheme_make_integer(d);
|
return scheme_make_integer(d);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user