From d0490672e1646033dc5e34fd8f6d0a6d595629f2 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 25 Jul 2023 08:11:49 +0530 Subject: [PATCH] Fix block range coalescing not working in algorithm.c --- kittens/transfer/algorithm.c | 2 +- tools/rsync/algorithm.go | 10 +++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/kittens/transfer/algorithm.c b/kittens/transfer/algorithm.c index 2a8667087..43afdf9e3 100644 --- a/kittens/transfer/algorithm.c +++ b/kittens/transfer/algorithm.c @@ -672,7 +672,7 @@ enqueue(Differ *self, Operation op) { } break; case OpBlockRange: - if (self->pending_op.block_index+1 == op.block_index) { + if (self->pending_op.block_index_end+1 == op.block_index) { self->pending_op.block_index_end = op.block_index; return true; } diff --git a/tools/rsync/algorithm.go b/tools/rsync/algorithm.go index 9dd47082b..4f768a2b2 100644 --- a/tools/rsync/algorithm.go +++ b/tools/rsync/algorithm.go @@ -292,19 +292,15 @@ func (r *rsync) ApplyDelta(output io.Writer, target io.ReadSeeker, op Operation) switch op.Type { case OpBlockRange: for i := op.BlockIndex; i <= op.BlockIndexEnd; i++ { - err = write_block(Operation{ + if err = write_block(Operation{ Type: OpBlock, BlockIndex: i, - }) - if err != nil { + }); err != nil { return err } } case OpBlock: - err = write_block(op) - if err != nil { - return err - } + return write_block(op) case OpData: return write(op.Data) case OpHash: