diff --git a/binary/utils.go b/binary/utils.go index 07134191..58fa592c 100644 --- a/binary/utils.go +++ b/binary/utils.go @@ -6,7 +6,6 @@ import ( "compress/zlib" binary2 "encoding/binary" "encoding/hex" - "io" "net" "github.com/Mrs4s/MiraiGo/utils" @@ -34,7 +33,7 @@ func ZlibUncompress(src []byte) []byte { var out bytes.Buffer r, _ := zlib.NewReader(b) defer r.Close() - io.Copy(&out, r) + _, _ = out.ReadFrom(r) return out.Bytes() } @@ -42,7 +41,8 @@ func ZlibCompress(data []byte) []byte { zw := acquireZlibWriter() _, _ = zw.w.Write(data) _ = zw.w.Close() - ret := append([]byte(nil), zw.buf.Bytes()...) + ret := make([]byte, len(zw.buf.Bytes())) + copy(ret, zw.buf.Bytes()) releaseZlibWriter(zw) return ret } @@ -51,7 +51,8 @@ func GZipCompress(data []byte) []byte { gw := AcquireGzipWriter() _, _ = gw.Write(data) _ = gw.Close() - ret := append([]byte(nil), gw.buf.Bytes()...) + ret := make([]byte, len(gw.buf.Bytes())) + copy(ret, gw.buf.Bytes()) ReleaseGzipWriter(gw) return ret } @@ -61,7 +62,7 @@ func GZipUncompress(src []byte) []byte { var out bytes.Buffer r, _ := gzip.NewReader(b) defer r.Close() - _, _ = io.Copy(&out, r) + _, _ = out.ReadFrom(r) return out.Bytes() } diff --git a/binary/writer.go b/binary/writer.go index d8a8703a..837cd862 100644 --- a/binary/writer.go +++ b/binary/writer.go @@ -12,7 +12,8 @@ type Writer bytes.Buffer func NewWriterF(f func(writer *Writer)) []byte { w := SelectWriter() f(w) - b := append([]byte(nil), w.Bytes()...) + b := make([]byte, len(w.Bytes())) + copy(b, w.Bytes()) w.put() return b } diff --git a/client/internal/oicq/oicq.go b/client/internal/oicq/oicq.go index c4469a40..9abe167f 100644 --- a/client/internal/oicq/oicq.go +++ b/client/internal/oicq/oicq.go @@ -84,7 +84,8 @@ func (c *Codec) Marshal(m *Message) []byte { } w.WriteByte(0x03) - buf := append([]byte(nil), w.Bytes()...) + buf := make([]byte, len(w.Bytes())) + copy(buf, w.Bytes()) goBinary.BigEndian.PutUint16(buf[1:3], uint16(len(buf))) return buf } diff --git a/message/forward.go b/message/forward.go index 689d4cd8..a1226bb2 100644 --- a/message/forward.go +++ b/message/forward.go @@ -1,9 +1,9 @@ package message import ( - "bytes" "crypto/md5" "regexp" + "strings" "sync" "github.com/Mrs4s/MiraiGo/binary" @@ -79,7 +79,7 @@ func (f *ForwardMessage) AddNode(node *ForwardNode) *ForwardMessage { func (f *ForwardMessage) Length() int { return len(f.Nodes) } func (f *ForwardMessage) Brief() string { - var brief bytes.Buffer + var brief strings.Builder for _, n := range f.Nodes { brief.WriteString(ToReadableString(n.Message)) if brief.Len() >= 27 { @@ -90,7 +90,7 @@ func (f *ForwardMessage) Brief() string { } func (f *ForwardMessage) Preview() string { - var pv bytes.Buffer + var pv strings.Builder for i, node := range f.Nodes { if i >= 4 { break diff --git a/utils/sys.go b/utils/sys.go index b9d78312..cdd8b69b 100644 --- a/utils/sys.go +++ b/utils/sys.go @@ -20,7 +20,7 @@ func ComputeMd5AndLength(r io.Reader) ([]byte, int64) { func (r *multiReadSeeker) Read(p []byte) (int, error) { if r.multiReader == nil { - var readers []io.Reader + readers := make([]io.Reader, len(r.readers)) for i := range r.readers { _, _ = r.readers[i].Seek(0, io.SeekStart) readers = append(readers, r.readers[i])