From f13d56d877edfdb06e1c694dca017cea1017c616 Mon Sep 17 00:00:00 2001 From: Hikmatulloh Hari Mukti Date: Mon, 2 Oct 2023 15:58:02 +0700 Subject: [PATCH] fix(decoder): avoid allocating slice buffer when no component expansion needed --- decoder/decoder.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/decoder/decoder.go b/decoder/decoder.go index fbf8cd8..2a3d5bc 100644 --- a/decoder/decoder.go +++ b/decoder/decoder.go @@ -438,7 +438,12 @@ func (d *Decoder) decodeMessageData(header byte) error { mesg := d.factory.CreateMesgOnly(mesgDef.MesgNum) mesg.Reserved = mesgDef.Reserved - mesg.Fields = make([]proto.Field, 0, len(mesgDef.FieldDefinitions)+bufferSizeFields) + + if d.options.shouldExpandComponent { + mesg.Fields = make([]proto.Field, 0, len(mesgDef.FieldDefinitions)+bufferSizeFields) + } else { + mesg.Fields = make([]proto.Field, 0, len(mesgDef.FieldDefinitions)) + } if (header & proto.MesgCompressedHeaderMask) == proto.MesgCompressedHeaderMask { // Compressed Timestamp Message Data timeOffset := header & proto.CompressedTimeMask