bencode/decode.go | 9 ++++++--- diff --git a/bencode/decode.go b/bencode/decode.go index e3324b4725483b67505ac63e97f193336962421e..82cad32bbe4b44f27b6f8978ff70aa30123abd5b 100644 --- a/bencode/decode.go +++ b/bencode/decode.go @@ -152,7 +152,9 @@ Value: "string", Type: v.Type(), }) } - v.Set(reflect.ValueOf(d.buf.Bytes())) + sl := make([]byte, len(d.buf.Bytes())) + copy(sl, d.buf.Bytes()) + v.Set(reflect.ValueOf(sl)) default: panic(&UnmarshalTypeError{ Value: "string", @@ -335,7 +337,8 @@ switch b { case 'd', 'l': // read until there is nothing to read - for d.read_one_value() {} + for d.read_one_value() { + } // consume 'e' as well b = d.read_byte() d.buf.WriteByte(b) @@ -347,7 +350,7 @@ if b >= '0' && b <= '9' { start := d.buf.Len() - 1 d.read_until(':') length, err := strconv.ParseInt(d.buf.String()[start:], 10, 64) - check_for_int_parse_error(err, d.offset - 1) + check_for_int_parse_error(err, d.offset-1) d.buf.WriteString(":") n, err := io.CopyN(&d.buf, d, length)