summaryrefslogtreecommitdiff
path: root/src/varint.zig
diff options
context:
space:
mode:
authorLucas Faria Mendes <lucas.oliveira1676@etec.sp.gov.br>2025-12-05 09:51:08 +0000
committerLucas Faria Mendes <lucas.oliveira1676@etec.sp.gov.br>2025-12-05 09:51:08 +0000
commitec53ee2bda1a63b27025601b9b8e4710434207a2 (patch)
treea8ef18c922c89e11355b5aa46e6998dd86c10704 /src/varint.zig
parentca682f9d764da0ae651f37cf06905cff36995064 (diff)
downloadsqlite-zig-ec53ee2bda1a63b27025601b9b8e4710434207a2.tar.gz
sqlite-zig-ec53ee2bda1a63b27025601b9b8e4710434207a2.zip
codecrafters submit [skip ci]
Diffstat (limited to 'src/varint.zig')
-rw-r--r--src/varint.zig8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/varint.zig b/src/varint.zig
index 45207cf..3a07442 100644
--- a/src/varint.zig
+++ b/src/varint.zig
@@ -6,8 +6,12 @@ pub fn parse(data: []const u8) struct { value: u64, len: usize } {
while (i < data.len and i < 9) : (i += 1) {
const byte = data[i];
- result |= @as(u64, byte & 0x7f) << @as(u6, @intCast(i * 7));
- if ((byte & 0x80) == 0) return .{ .value = result, .len = i + 1 };
+ if ((byte & 0x80) != 0) {
+ result = (result << 7) | @as(u64, byte & 0x7f);
+ } else {
+ result = (result << 7) | @as(u64, byte);
+ return .{ .value = result, .len = i + 1 };
+ }
}
return .{ .value = result, .len = i };