Skip to content

Commit 8187855

Browse files
committed
Convert bytes to string in Cmd.
1 parent 889409d commit 8187855

File tree

3 files changed

+16
-7
lines changed

3 files changed

+16
-7
lines changed

command.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,12 @@ func (cmd *Cmd) readReply(cn *pool.Conn) error {
165165
cmd.err = err
166166
return cmd.err
167167
}
168-
cmd.val = val
168+
if b, ok := val.([]byte); ok {
169+
// Bytes must be copied, because underlying memory is reused.
170+
cmd.val = string(b)
171+
} else {
172+
cmd.val = val
173+
}
169174
return nil
170175
}
171176

command_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"gopkg.in/redis.v4"
88
)
99

10-
var _ = Describe("Command", func() {
10+
var _ = Describe("Cmd", func() {
1111
var client *redis.Client
1212

1313
BeforeEach(func() {
@@ -19,15 +19,15 @@ var _ = Describe("Command", func() {
1919
Expect(client.Close()).NotTo(HaveOccurred())
2020
})
2121

22-
It("should implement Stringer", func() {
22+
It("implements Stringer", func() {
2323
set := client.Set("foo", "bar", 0)
2424
Expect(set.String()).To(Equal("SET foo bar: OK"))
2525

2626
get := client.Get("foo")
2727
Expect(get.String()).To(Equal("GET foo: bar"))
2828
})
2929

30-
It("should have correct val/err states", func() {
30+
It("has val/err", func() {
3131
set := client.Set("key", "hello", 0)
3232
Expect(set.Err()).NotTo(HaveOccurred())
3333
Expect(set.Val()).To(Equal("OK"))
@@ -40,7 +40,7 @@ var _ = Describe("Command", func() {
4040
Expect(set.Val()).To(Equal("OK"))
4141
})
4242

43-
It("should convert strings via helpers", func() {
43+
It("has helpers", func() {
4444
set := client.Set("key", "10", 0)
4545
Expect(set.Err()).NotTo(HaveOccurred())
4646

redis_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,15 @@ var _ = Describe("Client", func() {
128128
Expect(db2.Close()).NotTo(HaveOccurred())
129129
})
130130

131-
It("should process custom commands", func() {
131+
It("processes custom commands", func() {
132132
cmd := redis.NewCmd("PING")
133133
client.Process(cmd)
134+
135+
// Flush buffers.
136+
Expect(client.Echo("hello").Err()).NotTo(HaveOccurred())
137+
134138
Expect(cmd.Err()).NotTo(HaveOccurred())
135-
Expect(cmd.Val()).To(Equal([]byte("PONG")))
139+
Expect(cmd.Val()).To(Equal("PONG"))
136140
})
137141

138142
It("should retry command on network error", func() {

0 commit comments

Comments
 (0)