diff --git a/src/leb128/containers_leb128.ml b/src/leb128/containers_leb128.ml index f250a5eb..d43f3121 100644 --- a/src/leb128/containers_leb128.ml +++ b/src/leb128/containers_leb128.ml @@ -60,7 +60,7 @@ module Decode = struct Int64.to_int v, n_consumed let[@inline] decode_zigzag (v : int64) : int64 = - Int64.(logxor (shift_right v 1) (neg (logand v Int64.one))) + Int64.(logxor (shift_right_logical v 1) (sub 0L (logand v 1L))) let[@inline] i64 sl off : int64 * int = let v, n_consumed = u64 sl off in diff --git a/tests/leb128/t_leb128.ml b/tests/leb128/t_leb128.ml index 90f9fd30..f89d5611 100644 --- a/tests/leb128/t_leb128.ml +++ b/tests/leb128/t_leb128.ml @@ -72,7 +72,7 @@ true t @@ fun () -> let buf = Buf.create () in -Leb128.Encode.u64 buf 1L; +Leb128.Encode.u64 buf 0L; let slice = Buf.to_slice buf in let v, n = Leb128.Decode.u64 slice 0 in assert_equal ~printer:Int64.to_string 0L v;