summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/go-redis/redis/parser.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/go-redis/redis/parser.go')
-rw-r--r--vendor/github.com/go-redis/redis/parser.go26
1 files changed, 16 insertions, 10 deletions
diff --git a/vendor/github.com/go-redis/redis/parser.go b/vendor/github.com/go-redis/redis/parser.go
index b378abc4e..f0dc67f0e 100644
--- a/vendor/github.com/go-redis/redis/parser.go
+++ b/vendor/github.com/go-redis/redis/parser.go
@@ -14,17 +14,23 @@ func sliceParser(rd *proto.Reader, n int64) (interface{}, error) {
vals := make([]interface{}, 0, n)
for i := int64(0); i < n; i++ {
v, err := rd.ReadReply(sliceParser)
- if err == Nil {
- vals = append(vals, nil)
- } else if err != nil {
- return nil, err
- } else {
- switch vv := v.(type) {
- case []byte:
- vals = append(vals, string(vv))
- default:
- vals = append(vals, v)
+ if err != nil {
+ if err == Nil {
+ vals = append(vals, nil)
+ continue
+ }
+ if err, ok := err.(proto.RedisError); ok {
+ vals = append(vals, err)
+ continue
}
+ return nil, err
+ }
+
+ switch v := v.(type) {
+ case []byte:
+ vals = append(vals, string(v))
+ default:
+ vals = append(vals, v)
}
}
return vals, nil