| ... | @@ -51,7 +51,7 @@ fn seedTwo(self: *Pcg, init_s: u64, init_i: u64) void { | ... | @@ -51,7 +51,7 @@ fn seedTwo(self: *Pcg, init_s: u64, init_i: u64) void { |
| 51 | | 51 | |
| 52 | pub fn fill(self: *Pcg, buf: []u8) void { | 52 | pub fn fill(self: *Pcg, buf: []u8) void { |
| 53 | var i: usize = 0; | 53 | var i: usize = 0; |
| 54 | const aligned_len = buf.len - (buf.len & 7); | 54 | const aligned_len = buf.len - (buf.len & 3); |
| 55 | | 55 | |
| 56 | // Complete 4 byte segments. | 56 | // Complete 4 byte segments. |
| 57 | while (i < aligned_len) : (i += 4) { | 57 | while (i < aligned_len) : (i += 4) { |
| ... | @@ -108,11 +108,15 @@ test "pcg fill" { | ... | @@ -108,11 +108,15 @@ test "pcg fill" { |
| 108 | 3247963454, | 108 | 3247963454, |
| 109 | }; | 109 | }; |
| 110 | | 110 | |
| 111 | for (seq) |s| { | 111 | var i: u32 = 0; |
| 112 | var buf0: [4]u8 = undefined; | 112 | while (i < seq.len) : (i += 2) { |
| 113 | var buf1: [3]u8 = undefined; | 113 | var buf0: [8]u8 = undefined; |
| 114 | std.mem.writeIntLittle(u32, &buf0, s); | 114 | std.mem.writeIntLittle(u32, buf0[0..4], seq[i]); |
| | 115 | std.mem.writeIntLittle(u32, buf0[4..8], seq[i + 1]); |
| | 116 | |
| | 117 | var buf1: [7]u8 = undefined; |
| 115 | r.fill(&buf1); | 118 | r.fill(&buf1); |
| 116 | try std.testing.expect(std.mem.eql(u8, buf0[0..3], buf1[0..])); | 119 | |
| | 120 | try std.testing.expect(std.mem.eql(u8, buf0[0..7], buf1[0..])); |
| 117 | } | 121 | } |
| 118 | } | 122 | } |