瀏覽代碼

fix encoding of nil marshaler interface

Jason Toffaletti 8 年之前
父節點
當前提交
2017f3866b
共有 1 個文件被更改,包括 5 次插入1 次删除
  1. 5 1
      feature_reflect_native.go

+ 5 - 1
feature_reflect_native.go

@@ -662,7 +662,11 @@ func (encoder *marshalerEncoder) Encode(ptr unsafe.Pointer, stream *Stream) {
 	templateInterface := encoder.templateInterface
 	templateInterface.word = ptr
 	realInterface := (*interface{})(unsafe.Pointer(&templateInterface))
-	marshaler := (*realInterface).(json.Marshaler)
+	marshaler, ok := (*realInterface).(json.Marshaler)
+	if !ok {
+		stream.WriteVal(nil)
+		return
+	}
 
 	bytes, err := marshaler.MarshalJSON()
 	if err != nil {