0
@@ -180,28 +180,29 @@ void XFREE(void *p);
0
#define FREE(v) XFREE(v)
0
static inline native_int rbs_to_int(OBJECT obj) {
0
- return
STRIP_TAG(obj);
0
+ return
(native_int)STRIP_TAG(obj);
0
static inline OBJECT rbs_int_to_numeric(STATE, int num) {
0
ret = APPLY_TAG(num, TAG_FIXNUM);
0
- /* Number is too big for fixnum. Use bignum. */
0
- if((int)rbs_to_int(ret) != num) {
0
+ /* Number is too big for Fixnum. Use Bignum. */
0
+ if((native_int)rbs_to_int(ret) != num) {
0
return bignum_new(state, num);
0
static inline OBJECT rbs_uint_to_numeric(STATE, unsigned int num) {
0
+ ret = APPLY_TAG(num, TAG_FIXNUM);
0
- if (num > FIXNUM_MAX) {
0
+ /* Number is too big for Fixnum. Use Bignum. */
0
+ if((native_int)rbs_to_int(ret) != num) {
0
return bignum_new_unsigned(state, num);
0
- ret = APPLY_TAG(num, TAG_FIXNUM);
0
@@ -210,21 +211,22 @@ static inline OBJECT rbs_ll_to_numeric(STATE, long long num) {
0
ret = APPLY_TAG(num, TAG_FIXNUM);
0
- /* Number is too big for fixnum. Use bignum. */
0
- if((int)rbs_to_int(ret) != num) {
0
+ /* Number is too big for Fixnum. Use Bignum. */
0
+ if((native_int)rbs_to_int(ret) != num) {
0
return bignum_from_ll(state, num);
0
static inline OBJECT rbs_ull_to_numeric(STATE, unsigned long long num) {
0
+ ret = APPLY_TAG(num, TAG_FIXNUM);
0
- if (num > FIXNUM_MAX) {
0
+ /* Number is too big for Fixnum. Use Bignum. */
0
+ if((native_int)rbs_to_int(ret) != num) {
0
return bignum_from_ull(state, num);
0
- ret = APPLY_TAG(num, TAG_FIXNUM);
0
@@ -234,11 +236,11 @@ static inline OBJECT rbs_max_long_to_numeric(STATE, long long num) {
0
ret = APPLY_TAG(num, TAG_FIXNUM);
0
/* Number is too big for Fixnum. Use Bignum. */
0
- /* TODO - Change this to native_int when Fixnum becomes platform-specific */
0
- if((int)rbs_to_int(ret) != num) {
0
+ if((native_int)rbs_to_int(ret) != num) {
0
return bignum_from_ll(state, num);
0
static inline double rbs_fixnum_to_double(OBJECT obj) {
Comments
No one has commented yet.