Skip to content

Commit 75b7e1a

Browse files
sueun-devndyakov
andauthored
fix(proto): encode nil *uint8 as "0" like other numeric pointers (#3869)
WriteArg encodes a nil pointer to a numeric type as its zero value: every nil *int*/*uint*/*float*/*bool returns "0". The *uint8 case instead returned an empty string, which is also inconsistent with its own non-nil path that writes the number via w.uint. Encode nil *uint8 as "0" and update the table test assertion. Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com>
1 parent d551638 commit 75b7e1a

2 files changed

Lines changed: 2 additions & 2 deletions

File tree

internal/proto/writer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ func (w *Writer) WriteArg(v interface{}) error {
118118
return w.uint(uint64(v))
119119
case *uint8:
120120
if v == nil {
121-
return w.string("")
121+
return w.uint(0)
122122
}
123123
return w.uint(uint64(*v))
124124
case uint16:

internal/proto/writer_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ var _ = Describe("WriteArg", func() {
137137
(*uint)(nil): "$1\r\n0\r\n",
138138
uint8(10): "$2\r\n10\r\n",
139139
util.ToPtr(uint8(10)): "$2\r\n10\r\n",
140-
(*uint8)(nil): "$0\r\n\r\n",
140+
(*uint8)(nil): "$1\r\n0\r\n",
141141
uint16(10): "$2\r\n10\r\n",
142142
util.ToPtr(uint16(10)): "$2\r\n10\r\n",
143143
(*uint16)(nil): "$1\r\n0\r\n",

0 commit comments

Comments
 (0)