From: Matt Joiner Date: Wed, 19 Mar 2014 14:54:18 +0000 (+1100) Subject: Fix buffer reuse bug and some formatting. X-Git-Tag: v1.0.0~1199^2~12 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=7e2c384bd5f5e3eee8447ab56c28e5eb8c4eb3e4;p=btrtrc.git Fix buffer reuse bug and some formatting. --- diff --git a/bencode/decode.go b/bencode/decode.go index e3324b47..82cad32b 100644 --- a/bencode/decode.go +++ b/bencode/decode.go @@ -152,7 +152,9 @@ func (d *decoder) parse_string(v reflect.Value) { 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 @@ func (d *decoder) read_one_value() bool { 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 @@ func (d *decoder) read_one_value() bool { 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)