diff --git a/weed/filer/reader_at.go b/weed/filer/reader_at.go index d7617b740..5c52c8a2f 100644 --- a/weed/filer/reader_at.go +++ b/weed/filer/reader_at.go @@ -173,7 +173,7 @@ func (c *ChunkReadAt) doReadAt(p []byte, offset int64) (n int, ts int64, err err // zero the remaining bytes if a gap exists at the end of the last chunk (or a fully sparse file) if err == nil && remaining > 0 { var delta int64 - if c.fileSize > startOffset { + if c.fileSize >= startOffset { delta = min(remaining, c.fileSize-startOffset) startOffset -= offset } else { @@ -220,6 +220,9 @@ func (c *ChunkReadAt) readChunkSliceAt(buffer []byte, chunkView *ChunkView, next } func zero(buffer []byte, start, length int64) int { + if length <= 0 { + return 0 + } end := min(start+length, int64(len(buffer))) start = max(start, 0)