File tree Expand file tree Collapse file tree 1 file changed +14
-5
lines changed
Expand file tree Collapse file tree 1 file changed +14
-5
lines changed Original file line number Diff line number Diff line change @@ -186,15 +186,24 @@ let rec generatePayloadTree depth tag =
186186
187187let random =
188188 let seed = ref 49734321 in
189+ let mask_32bit =
190+ match Sys. int_size with
191+ | 31 | 32 -> - 1
192+ | _ -> int_of_string " 0xffffffff"
193+ in
194+ let l_0xc761c23c = int_of_string " 0xc761c23c" in
195+ let l_0xd3a2646c = int_of_string " 0xd3a2646c" in
196+ let l_0xfd7046c5 = int_of_string " 0xfd7046c5" in
197+ let l_0xb55a4f09 = int_of_string " 0xb55a4f09" in
189198 fun () ->
190199 (* // Robert Jenkins' 32 bit integer hash function. *)
191200 let s = ! seed in
192- let s = (s + 0x7ed55d16 + (s lsl 12 )) land 0xffffffff in
193- let s = s lxor 0xc761c23c lxor (s lsr 19 ) in
201+ let s = (s + 0x7ed55d16 + (s lsl 12 )) land mask_32bit in
202+ let s = s lxor l_0xc761c23c lxor (s lsr 19 ) in
194203 let s = s + 0x165667b1 + (s lsl 5 ) in
195- let s = (s + 0xd3a2646c ) lxor (s lsl 9 ) in
196- let s = (s + 0xfd7046c5 + (s lsl 3 )) land 0xffffffff in
197- let s = s lxor 0xb55a4f09 lxor (s lsr 16 ) in
204+ let s = (s + l_0xd3a2646c ) lxor (s lsl 9 ) in
205+ let s = (s + l_0xfd7046c5 + (s lsl 3 )) land mask_32bit in
206+ let s = s lxor l_0xb55a4f09 lxor (s lsr 16 ) in
198207 seed := s;
199208 float (s land 0xfffffff ) /. float 0x10000000
200209
You can’t perform that action at this time.
0 commit comments