From beed0c0e5fbeec32047e2142aaf1380f82286df1 Mon Sep 17 00:00:00 2001 From: Jack Christensen Date: Fri, 29 Jan 2016 16:23:43 -0600 Subject: [PATCH] Fix (r *msgReader) rxMsg() error guard clause rxMsg() has a guard clause that checks if the msgReader has already encountered an error. It should return that pre-existing error. It was incorrectly returning a local `err` variable instead of `r.err`. --- CHANGELOG.md | 1 + msg_reader.go | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f946d67f..cef2eba0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Tip +* Fix msgReader.rxMsg bug when msgReader already has error * Add support for database/sql.Scanner and database/sql/driver.Valuer interfaces * Go float64 can no longer be encoded to a PostgreSQL float4 * Add ConnPool.Reset method diff --git a/msg_reader.go b/msg_reader.go index 9098c20a..4c2d9805 100644 --- a/msg_reader.go +++ b/msg_reader.go @@ -32,9 +32,9 @@ func (r *msgReader) fatal(err error) { } // rxMsg reads the type and size of the next message. -func (r *msgReader) rxMsg() (t byte, err error) { +func (r *msgReader) rxMsg() (byte, error) { if r.err != nil { - return 0, err + return 0, r.err } if r.msgBytesRemaining > 0 { @@ -46,7 +46,7 @@ func (r *msgReader) rxMsg() (t byte, err error) { } b := r.buf[0:5] - _, err = io.ReadFull(r.reader, b) + _, err := io.ReadFull(r.reader, b) r.msgBytesRemaining = int32(binary.BigEndian.Uint32(b[1:])) - 4 return b[0], err }