mirror of
https://github.com/golang/go
synced 2024-11-18 01:04:48 -07:00
encoding/base32: handle NoPadding when using buffered encoding in Close
This changes makes encoder.Close aware of how many bytes to write if there is any data left in the buffer. Fixes #25295
This commit is contained in:
parent
814c749c8f
commit
f374096d2f
@ -244,8 +244,9 @@ func (e *encoder) Close() error {
|
||||
// If there's anything left in the buffer, flush it out
|
||||
if e.err == nil && e.nbuf > 0 {
|
||||
e.enc.Encode(e.out[0:], e.buf[0:e.nbuf])
|
||||
encodedLen := e.enc.EncodedLen(e.nbuf)
|
||||
e.nbuf = 0
|
||||
_, e.err = e.w.Write(e.out[0:8])
|
||||
_, e.err = e.w.Write(e.out[0:encodedLen])
|
||||
}
|
||||
return e.err
|
||||
}
|
||||
|
@ -578,3 +578,31 @@ func TestEncodedDecodedLen(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestWithoutPaddingClose(t *testing.T) {
|
||||
encodings := []*Encoding{
|
||||
StdEncoding,
|
||||
StdEncoding.WithPadding(NoPadding),
|
||||
}
|
||||
|
||||
for _, encoding := range encodings {
|
||||
for _, testpair := range pairs {
|
||||
|
||||
var buf bytes.Buffer
|
||||
encoder := NewEncoder(encoding, &buf)
|
||||
encoder.Write([]byte(testpair.decoded))
|
||||
encoder.Close()
|
||||
|
||||
expected := testpair.encoded
|
||||
if encoding.padChar == NoPadding {
|
||||
expected = strings.Replace(expected, "=", "", -1)
|
||||
}
|
||||
|
||||
res := buf.String()
|
||||
|
||||
if res != expected {
|
||||
t.Errorf("Expected %s got %s; padChar=%d", expected, res, encoding.padChar)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user