aboutsummaryrefslogtreecommitdiff
path: root/format/delta/apply/header.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-04 08:26:56 +0800
committerGravatar Runxi Yu2026-03-04 08:59:53 +0800
commitab7501be34032fb9e5c48726a68ae90a917af9eb (patch)
tree20d005647569befea8133e953c3270e8fd2a2a5b /format/delta/apply/header.go
parent*: gofumpt (diff)
signatureNo signature
*: Lint
Diffstat (limited to 'format/delta/apply/header.go')
-rw-r--r--format/delta/apply/header.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/format/delta/apply/header.go b/format/delta/apply/header.go
index 996b006b..dbd29550 100644
--- a/format/delta/apply/header.go
+++ b/format/delta/apply/header.go
@@ -14,10 +14,12 @@ func ReadHeaderSizes(reader io.ByteReader) (int, int, error) {
if err != nil {
return 0, 0, err
}
+
dstSize, err := readVarintFromByteReader(reader)
if err != nil {
return 0, 0, err
}
+
return srcSize, dstSize, nil
}
@@ -25,15 +27,18 @@ func ReadHeaderSizes(reader io.ByteReader) (int, int, error) {
func readVarintFromByteReader(reader io.ByteReader) (int, error) {
value := 0
shift := uint(0)
+
for {
b, err := reader.ReadByte()
if err != nil {
return 0, fmt.Errorf("format/delta/apply: malformed delta varint: %w", err)
}
+
value |= int(b&0x7f) << shift
if b&0x80 == 0 {
return value, nil
}
+
shift += 7
if shift > 63 {
return 0, fmt.Errorf("format/delta/apply: delta varint overflow")