From 0f5379494a4c1d4b8d262d9947bfc11def5a6eac Mon Sep 17 00:00:00 2001 From: chendonghai Date: Tue, 6 Jun 2017 19:36:33 +0800 Subject: [PATCH 1/2] unmarshal failed return non-pointer error --- feature_adapter.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/feature_adapter.go b/feature_adapter.go index aaddfab..621219d 100644 --- a/feature_adapter.go +++ b/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,12 @@ 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 + err = errors.New("the second param must be ptr type") + return + } iter.ReadVal(v) if iter.head == iter.tail { iter.loadMore() @@ -157,4 +165,4 @@ func (adapter *AdaptedEncoder) Encode(val interface{}) error { func (adapter *AdaptedEncoder) SetIndent(prefix, indent string) { // not implemented yet -} \ No newline at end of file +} From 67be6df2b19506b7d8c3c100b76b69a6362968bf Mon Sep 17 00:00:00 2001 From: yellow chicks Date: Tue, 6 Jun 2017 20:01:43 +0800 Subject: [PATCH 2/2] Update feature_adapter.go --- feature_adapter.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/feature_adapter.go b/feature_adapter.go index 621219d..4e9679b 100644 --- a/feature_adapter.go +++ b/feature_adapter.go @@ -17,8 +17,7 @@ func Unmarshal(data []byte, v interface{}) error { typ := reflect.TypeOf(v) if typ.Kind() != reflect.Ptr { // return non-pointer error - err = errors.New("the second param must be ptr type") - return + return errors.New("the second param must be ptr type") } iter.ReadVal(v) if iter.head == iter.tail {