From 6080433814b5d5f428a0ae081898b46469a1a377 Mon Sep 17 00:00:00 2001 From: huangwei1024 Date: Fri, 17 Mar 2017 01:46:31 +0800 Subject: [PATCH 1/2] [fix] PackBytes bug when length < MAX16BIT --- pack.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pack.go b/pack.go index 1d2714f..853919c 100644 --- a/pack.go +++ b/pack.go @@ -186,7 +186,7 @@ func PackBytes(writer io.Writer, value []byte) (n int, err error) { n2, err := writer.Write(value) return n1 + n2, err } else if length < MAX16BIT { - n1, err := writer.Write(Bytes{RAW16, byte(length >> 16), byte(length)}) + n1, err := writer.Write(Bytes{RAW16, byte(length >> 8), byte(length)}) if err != nil { return n1, err } From 24d3b820d6529099ddaa2227a3f4bf8cde3216d6 Mon Sep 17 00:00:00 2001 From: huangwei1024 Date: Sat, 18 Mar 2017 12:29:20 +0800 Subject: [PATCH 2/2] [fix] PackFloat32 using PackInt32 but no modified type --- pack.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pack.go b/pack.go index 853919c..8c8a664 100644 --- a/pack.go +++ b/pack.go @@ -167,12 +167,14 @@ func PackBool(writer io.Writer, value bool) (n int, err error) { // Packs a given value and writes it into the specified writer. func PackFloat32(writer io.Writer, value float32) (n int, err error) { - return PackUint32(writer, *(*uint32)(unsafe.Pointer(&value))) + _value := *(*uint32)(unsafe.Pointer(&value)) + return writer.Write(Bytes{FLOAT, byte(_value >> 24), byte(_value >> 16), byte(_value >> 8), byte(_value)}) } // Packs a given value and writes it into the specified writer. func PackFloat64(writer io.Writer, value float64) (n int, err error) { - return PackUint64(writer, *(*uint64)(unsafe.Pointer(&value))) + _value := *(*uint64)(unsafe.Pointer(&value)) + return writer.Write(Bytes{DOUBLE, byte(_value >> 56), byte(_value >> 48), byte(_value >> 40), byte(_value >> 32), byte(_value >> 24), byte(_value >> 16), byte(_value >> 8), byte(_value)}) } // Packs a given value and writes it into the specified writer.