Explorar el Código

Merge pull request #41 from 1046102779/master

解析时,如果输出参数不是指针类型,直接报错,避免程序挂掉
Tao Wen hace 8 años
padre
commit
6509ba05df
Se han modificado 1 ficheros con 9 adiciones y 2 borrados
  1. 9 2
      feature_adapter.go

+ 9 - 2
feature_adapter.go

@@ -1,8 +1,10 @@
 package jsoniter
 
 import (
-	"io"
 	"bytes"
+	"errors"
+	"io"
+	"reflect"
 )
 
 // Unmarshal adapts to json/encoding Unmarshal API
@@ -12,6 +14,11 @@ import (
 func Unmarshal(data []byte, v interface{}) error {
 	data = data[:lastNotSpacePos(data)]
 	iter := ParseBytes(data)
+	typ := reflect.TypeOf(v)
+	if typ.Kind() != reflect.Ptr {
+		// return non-pointer error
+		return errors.New("the second param must be ptr type")
+	}
 	iter.ReadVal(v)
 	if iter.head == iter.tail {
 		iter.loadMore()
@@ -157,4 +164,4 @@ func (adapter *AdaptedEncoder) Encode(val interface{}) error {
 
 func (adapter *AdaptedEncoder) SetIndent(prefix, indent string) {
 	// not implemented yet
-}
+}