Kaynağa Gözat

fix encoding of nil marshaler interface

Jason Toffaletti 8 yıl önce
ebeveyn
işleme
2017f3866b
1 değiştirilmiş dosya ile 5 ekleme ve 1 silme
  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 {