diff options
| author | Lucas Faria Mendes <lucas.oliveira1676@etec.sp.gov.br> | 2025-12-05 09:51:08 +0000 |
|---|---|---|
| committer | Lucas Faria Mendes <lucas.oliveira1676@etec.sp.gov.br> | 2025-12-05 09:51:08 +0000 |
| commit | ec53ee2bda1a63b27025601b9b8e4710434207a2 (patch) | |
| tree | a8ef18c922c89e11355b5aa46e6998dd86c10704 /src/varint.zig | |
| parent | ca682f9d764da0ae651f37cf06905cff36995064 (diff) | |
| download | sqlite-zig-ec53ee2bda1a63b27025601b9b8e4710434207a2.tar.gz sqlite-zig-ec53ee2bda1a63b27025601b9b8e4710434207a2.zip | |
codecrafters submit [skip ci]
Diffstat (limited to 'src/varint.zig')
| -rw-r--r-- | src/varint.zig | 8 |
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 }; |