diff --git a/c/external.c b/c/external.c index 808647c..343d899 100644 --- a/c/external.c +++ b/c/external.c @@ -835,7 +835,7 @@ s48_extract_unsigned_integer(s48_value value) (! S48_FIXNUM_P(boxed_high)) || (high > 0xFFFF)) s48_raise_argtype_error(value); - else return (- (((- high) << 16) - low)); + else return ((((unsigned long) high) << 16) + low); } } }