Bug in erl_interface in R9C?

Kent Boortz kent@REDACTED
Mon Aug 25 01:27:41 CEST 2003


Javier París Fernández <paris@REDACTED> writes:
> I think there's a bug in ei_decode_longlong when decoding integers bigger
> than 2^32.
> 
> --- otp_src_R9C-0/lib/erl_interface/src/decode/decode_longlong.c~       2003-08-20 18:01:54.000000000 +0200
> +++ otp_src_R9C-0/lib/erl_interface/src/decode/decode_longlong.c        2003-08-20 18:19:18.000000000 +0200
> @@ -51,7 +51,7 @@
>         int pos, shift = 0;
>         n = 0;
>         for (pos = 0; pos < arity; pos++) {
> -           n |= get8(s) << shift;
> +           n |= ((EI_LONGLONG) get8(s)) << shift;
>             shift += 8;
>         }
>      }
> 
> The result of get8(s) << shift is an integer, but when the shift makes the
> number bigger than 2^32 the remaining bits are discarded. Putting a cast
> to force the result to be 64 bits solves the problem.

Thank you for reporting this. The bug has been added to our internal
bug tracking system (OTP-4784) and will be corrected in R9C-1,

kent



More information about the erlang-questions mailing list