Skip to content

Commit e1425da

Browse files
committed
Unpack.peek: remove bound checking
1 parent 7dfbf7e commit e1425da

File tree

2 files changed

+7
-13
lines changed

2 files changed

+7
-13
lines changed

src/Unpack.zig

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,14 @@ pub fn setAppend(self: *Unpack, olen: usize, new: []const u8) void {
7575
}
7676

7777
pub const PeekError = error{
78-
BufferEmpty,
78+
/// The type could not be recongized.
7979
UnrecognizedType,
8080
};
8181

82+
/// Peek the next value.
83+
///
84+
/// The inner buffer must have at least 1 byte.
8285
pub fn peek(self: *const Unpack) PeekError!HeaderType {
83-
if (self.rest.len == 0) {
84-
return PeekError.BufferEmpty;
85-
}
86-
8786
return HeaderType.from(self.rest[0]) orelse PeekError.UnrecognizedType;
8887
}
8988

src/io.zig

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -148,15 +148,10 @@ pub const UnpackReader = struct {
148148

149149
/// Peek the next value's type
150150
fn peek(self: *UnpackReader, reader: anytype) !fmt.HeaderType {
151-
while (true) {
152-
return self.unpack.peek() catch |err| switch (err) {
153-
error.BufferEmpty => {
154-
try self.readMore(reader);
155-
continue;
156-
},
157-
else => err,
158-
};
151+
while (self.unpack.rest.len == 0) {
152+
try self.readMore(reader);
159153
}
154+
return try self.unpack.peek();
160155
}
161156

162157
fn resetUnreadToStart(self: *UnpackReader) usize {

0 commit comments

Comments
 (0)