@@ -373,7 +373,7 @@ func (enc *Encoding) decode(dst, src []byte) (n int, end bool, err error) {
373
373
func (enc * Encoding ) Decode (dst , src []byte ) (n int , err error ) {
374
374
buf := make ([]byte , len (src ))
375
375
copy (buf , src )
376
- l := stripNewlines (buf , len ( buf ) )
376
+ l := stripNewlines (buf )
377
377
n , _ , err = enc .decode (dst , buf [:l ])
378
378
return
379
379
}
@@ -383,7 +383,7 @@ func (enc *Encoding) DecodeString(s string) ([]byte, error) {
383
383
dbuf := make ([]byte , enc .DecodedLen (len (s )))
384
384
src := make ([]byte , len (s ))
385
385
copy (src , s )
386
- l := stripNewlines (src , len ( src ) )
386
+ l := stripNewlines (src )
387
387
n , _ , err := enc .decode (dbuf , src [:l ])
388
388
return dbuf [:n ], err
389
389
}
@@ -500,9 +500,11 @@ type newlineFilteringReader struct {
500
500
wrapped io.Reader
501
501
}
502
502
503
- func stripNewlines (p []byte , n int ) int {
503
+ // stripNewlines removes newline characters and returns the number
504
+ // of non-newline characters moved to the beginning of p.
505
+ func stripNewlines (p []byte ) int {
504
506
offset := 0
505
- for i , b := range p [0 :n ] {
507
+ for i , b := range p [0 :len ( p ) ] {
506
508
if b != '\r' && b != '\n' {
507
509
if i != offset {
508
510
p [offset ] = b
@@ -516,7 +518,7 @@ func stripNewlines(p []byte, n int) int {
516
518
func (r * newlineFilteringReader ) Read (p []byte ) (int , error ) {
517
519
n , err := r .wrapped .Read (p )
518
520
for n > 0 {
519
- offset := stripNewlines (p , n )
521
+ offset := stripNewlines (p [: n ] )
520
522
if err != nil || offset > 0 {
521
523
return offset , err
522
524
}
0 commit comments