Pārlūkot izejas kodu

fix #239, empty slice

Tao Wen 7 gadi atpakaļ
vecāks
revīzija
ea6403326b
4 mainītis faili ar 22 papildinājumiem un 22 dzēšanām
  1. 0 3
      reflect.go
  2. 1 1
      reflect_slice.go
  3. 18 18
      type_tests/struct_test.go
  4. 3 0
      value_tests/slice_test.go

+ 0 - 3
reflect.go

@@ -1,11 +1,8 @@
 package jsoniter
 
 import (
-	"encoding"
-	"encoding/json"
 	"fmt"
 	"reflect"
-	"time"
 	"unsafe"
 	"github.com/v2pro/plz/reflect2"
 )

+ 1 - 1
reflect_slice.go

@@ -78,7 +78,7 @@ func (decoder *sliceDecoder) doDecode(ptr unsafe.Pointer, iter *Iterator) {
 	}
 	c = iter.nextToken()
 	if c == ']' {
-		sliceType.Set(ptr, sliceType.UnsafeNew())
+		sliceType.UnsafeSet(ptr, sliceType.UnsafeMakeSlice(0, 0))
 		return
 	}
 	iter.unreadByte()

+ 18 - 18
type_tests/struct_test.go

@@ -325,27 +325,27 @@ func structFields1To11() {
 			Field9 string
 		})(nil),
 		(*struct {
-			Field1 string
-			Field2 string
-			Field3 string
-			Field4 string
-			Field5 string
-			Field6 string
-			Field7 string
-			Field8 string
-			Field9 string
+			Field1  string
+			Field2  string
+			Field3  string
+			Field4  string
+			Field5  string
+			Field6  string
+			Field7  string
+			Field8  string
+			Field9  string
 			Field10 string
 		})(nil),
 		(*struct {
-			Field1 string
-			Field2 string
-			Field3 string
-			Field4 string
-			Field5 string
-			Field6 string
-			Field7 string
-			Field8 string
-			Field9 string
+			Field1  string
+			Field2  string
+			Field3  string
+			Field4  string
+			Field5  string
+			Field6  string
+			Field7  string
+			Field8  string
+			Field9  string
 			Field10 string
 			Field11 string
 		})(nil),

+ 3 - 0
value_tests/slice_test.go

@@ -10,5 +10,8 @@ func init() {
 	unmarshalCases = append(unmarshalCases, unmarshalCase{
 		ptr:   (*[]string)(nil),
 		input: "null",
+	}, unmarshalCase{
+		ptr:   (*[]string)(nil),
+		input: "[]",
 	})
 }