Skip to content
This repository has been archived by the owner on Mar 29, 2023. It is now read-only.

Commit

Permalink
Don't expose io.EOF in multifilereader
Browse files Browse the repository at this point in the history
  • Loading branch information
magik6k committed Nov 30, 2018
1 parent 34b1590 commit 23e9565
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 5 deletions.
2 changes: 1 addition & 1 deletion multifilereader.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ func (mfr *MultiFileReader) Read(buf []byte) (written int, err error) {

if !mfr.files[len(mfr.files)-1].Next() {
if mfr.files[len(mfr.files)-1].Err() != nil {
return 0, err
return 0, mfr.files[len(mfr.files)-1].Err()
}
mfr.files = mfr.files[:len(mfr.files)-1]
mfr.path = mfr.path[:len(mfr.path)-1]
Expand Down
10 changes: 7 additions & 3 deletions multifilereader_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,16 +61,20 @@ func TestMultiFileReaderToMultiFile(t *testing.T) {
t.Fatal("iterator didn't work as expected")
}

if subIt.Next() {
if subIt.Next() || it.Err() != nil {
t.Fatal("iterator didn't work as expected")
}

// try to break internal state
if subIt.Next() {
if subIt.Next() || it.Err() != nil {
t.Fatal("iterator didn't work as expected")
}

if !it.Next() || it.Name() != "beep.txt" || it.Dir() != nil {
if !it.Next() || it.Name() != "beep.txt" || it.Dir() != nil || it.Err() != nil {
t.Fatal("iterator didn't work as expected")
}

if it.Next() || it.Err() != nil {
t.Fatal("iterator didn't work as expected")
}
}
Expand Down
14 changes: 13 additions & 1 deletion multipartfile.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package files

import (
"errors"
"io"
"io/ioutil"
"mime"
"mime/multipart"
Expand Down Expand Up @@ -127,6 +128,9 @@ func (it *multipartIterator) Next() bool {
}
part, err := it.f.Reader.NextPart()
if err != nil {
if err == io.EOF {
return false
}
it.err = err
return false
}
Expand Down Expand Up @@ -198,7 +202,15 @@ func (pr *peekReader) NextPart() (*multipart.Part, error) {
return p, nil
}

return pr.r.NextPart()
if pr.r == nil {
return nil, io.EOF
}

p, err := pr.r.NextPart()
if err == io.EOF {
pr.r = nil
}
return p, err
}

func (pr *peekReader) put(p *multipart.Part) error {
Expand Down

0 comments on commit 23e9565

Please sign in to comment.