From c2a8b4bb5767b35974d45dad6777187616553131 Mon Sep 17 00:00:00 2001 From: Arceliar Date: Thu, 28 Nov 2019 12:00:00 -0600 Subject: [PATCH] get rid of an allocation in tunWriter's _write --- src/tuntap/iface.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/tuntap/iface.go b/src/tuntap/iface.go index 463f48f..5efbc8a 100644 --- a/src/tuntap/iface.go +++ b/src/tuntap/iface.go @@ -25,14 +25,16 @@ func (w *tunWriter) writeFrom(from phony.Actor, b []byte) { // write is pretty loose with the memory safety rules, e.g. it assumes it can // read w.tun.iface.IsTap() safely func (w *tunWriter) _write(b []byte) { + defer util.PutBytes(b) var written int var err error n := len(b) if n == 0 { return } - written, err = w.tun.iface.Write(append(make([]byte, TUN_OFFSET_BYTES), b...), TUN_OFFSET_BYTES) - util.PutBytes(b) + temp := append(util.ResizeBytes(util.GetBytes(), TUN_OFFSET_BYTES), b...) + defer util.PutBytes(temp) + written, err = w.tun.iface.Write(temp, TUN_OFFSET_BYTES) if err != nil { w.tun.Act(w, func() { if !w.tun.isOpen {