fix
diff --git a/codec.go b/codec.go
index 8bb02fa..184938c 100644
--- a/codec.go
+++ b/codec.go
@@ -292,12 +292,8 @@
 			return
 		}
 	}
-	// zero value not need to set
-	if !v.IsValid() {
-		return
-	}
 	//temporary process, only handle the same type of situation
-	if UnpackPtrType(dest.Type()) == UnpackPtrType(v.Type()) && dest.Kind() == reflect.Ptr && dest.CanSet() {
+	if v.IsValid() && UnpackPtrType(dest.Type()) == UnpackPtrType(v.Type()) && dest.Kind() == reflect.Ptr && dest.CanSet() {
 		for dest.Type() != v.Type() {
 			v = PackPtr(v)
 		}