Skip to content

Commit 2f1052a

Browse files
committed
std: Fix broken tests
1 parent 4ab13a3 commit 2f1052a

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

lib/std/io.zig

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -350,12 +350,18 @@ pub fn BitInStream(endian: builtin.Endian, comptime Error: type) type {
350350
switch (endian) {
351351
.Big => {
352352
out_buffer = @as(Buf, self.bit_buffer >> shift);
353-
self.bit_buffer <<= n;
353+
if (n >= u7_bit_count)
354+
self.bit_buffer = 0
355+
else
356+
self.bit_buffer <<= n;
354357
},
355358
.Little => {
356359
const value = (self.bit_buffer << shift) >> shift;
357360
out_buffer = @as(Buf, value);
358-
self.bit_buffer >>= n;
361+
if (n >= u7_bit_count)
362+
self.bit_buffer = 0
363+
else
364+
self.bit_buffer >>= n;
359365
},
360366
}
361367
self.bit_count -= n;

lib/std/mem.zig

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -921,6 +921,9 @@ pub fn writeInt(comptime T: type, buffer: *[@divExact(T.bit_count, 8)]u8, value:
921921
pub fn writeIntSliceLittle(comptime T: type, buffer: []u8, value: T) void {
922922
assert(buffer.len >= @divExact(T.bit_count, 8));
923923

924+
if (T.bit_count == 0)
925+
return set(u8, buffer, 0);
926+
924927
// TODO I want to call writeIntLittle here but comptime eval facilities aren't good enough
925928
const uint = std.meta.IntType(false, T.bit_count);
926929
var bits = @truncate(uint, value);
@@ -938,6 +941,9 @@ pub fn writeIntSliceLittle(comptime T: type, buffer: []u8, value: T) void {
938941
pub fn writeIntSliceBig(comptime T: type, buffer: []u8, value: T) void {
939942
assert(buffer.len >= @divExact(T.bit_count, 8));
940943

944+
if (T.bit_count == 0)
945+
return set(u8, buffer, 0);
946+
941947
// TODO I want to call writeIntBig here but comptime eval facilities aren't good enough
942948
const uint = std.meta.IntType(false, T.bit_count);
943949
var bits = @truncate(uint, value);
@@ -1807,7 +1813,7 @@ test "sliceAsBytes" {
18071813
}
18081814

18091815
test "sliceAsBytes with sentinel slice" {
1810-
const empty_string:[:0]const u8 = "";
1816+
const empty_string: [:0]const u8 = "";
18111817
const bytes = sliceAsBytes(empty_string);
18121818
testing.expect(bytes.len == 0);
18131819
}

0 commit comments

Comments
 (0)