From 95af1f9ccff32db09dc098103dc5fcec1e9c5aa0 Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Sat, 3 Aug 2019 17:44:44 +0100 Subject: [PATCH] fs: fix FixRangeOption so it works with 0 length files --- fs/options.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/fs/options.go b/fs/options.go index df62d898a..56eaea4f2 100644 --- a/fs/options.go +++ b/fs/options.go @@ -139,6 +139,17 @@ func (o *RangeOption) Decode(size int64) (offset, limit int64) { // not exceed filesize. Some remotes (eg Onedrive, Box) don't support // range requests which index from the end. func FixRangeOption(options []OpenOption, size int64) { + if size == 0 { + // if size 0 then remove RangeOption~s + // replacing with an empty HTTPOption~s which won't be rendered + for i := range options { + if _, ok := options[i].(*RangeOption); ok { + options[i] = &HTTPOption{} + + } + } + return + } for i := range options { option := options[i] if x, ok := option.(*RangeOption); ok { @@ -148,7 +159,7 @@ func FixRangeOption(options []OpenOption, size int64) { options[i] = x } if x.End > size { - x = &RangeOption{Start: x.Start, End: size} + x = &RangeOption{Start: x.Start, End: size - 1} options[i] = x } }