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 } }