瀏覽代碼

marshall: allow unmarshalling into nil byte slice (#958)

Chris Bannister 8 年之前
父節點
當前提交
6563b457a5
共有 2 個文件被更改,包括 10 次插入4 次删除
  1. 3 4
      marshal.go
  2. 7 0
      marshal_test.go

+ 3 - 4
marshal.go

@@ -230,12 +230,11 @@ func unmarshalVarchar(info TypeInfo, data []byte, value interface{}) error {
 		*v = string(data)
 		return nil
 	case *[]byte:
-		var dataCopy []byte
 		if data != nil {
-			dataCopy = make([]byte, len(data))
-			copy(dataCopy, data)
+			*v = copyBytes(data)
+		} else {
+			*v = nil
 		}
-		*v = dataCopy
 		return nil
 	}
 	rv := reflect.ValueOf(value)

+ 7 - 0
marshal_test.go

@@ -851,6 +851,13 @@ var marshalTests = []struct {
 		nil,
 		nil,
 	},
+	{
+		NativeType{proto: 2, typ: TypeBlob},
+		[]byte(nil),
+		([]byte)(nil),
+		nil,
+		nil,
+	},
 }
 
 func decimalize(s string) *inf.Dec {