From 849f53b080840c072994bdff6af0cbf7155671ef Mon Sep 17 00:00:00 2001 From: Aaron Jacobs Date: Mon, 19 Dec 2016 13:04:02 +1100 Subject: [PATCH] OutMessage.ShrinkTo --- internal/buffer/out_message.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/internal/buffer/out_message.go b/internal/buffer/out_message.go index a503dcc..b94ea50 100644 --- a/internal/buffer/out_message.go +++ b/internal/buffer/out_message.go @@ -103,7 +103,16 @@ func (m *OutMessage) GrowNoZero(n int) (p unsafe.Pointer) { // ShrinkTo shrinks m to the given size. It panics if the size is greater than // Len() or less than OutMessageHeaderSize. -func (m *OutMessage) ShrinkTo(n int) +func (m *OutMessage) ShrinkTo(n int) { + if n < OutMessageHeaderSize || n > m.Len() { + panic(fmt.Sprintf( + "ShrinkTo(%d) out of range (current Len: %d)", + n, + m.Len())) + } + + m.payloadOffset = n - OutMessageHeaderSize +} // Append is equivalent to growing by len(src), then copying src over the new // segment. Int panics if there is not enough room available.