From: Rob Pike Date: Thu, 9 Dec 2010 16:01:32 +0000 (-0500) Subject: gob: fix bug sending zero-length top-level slices and maps X-Git-Tag: weekly.2010-12-15~77 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=b7c73110b10a28cf33c45ae7117fa4f6e52871a7;p=gostls13.git gob: fix bug sending zero-length top-level slices and maps Fixes #1278. R=rsc CC=golang-dev https://golang.org/cl/3434046 --- diff --git a/src/pkg/gob/encode.go b/src/pkg/gob/encode.go index 7393866802..db1f136f10 100644 --- a/src/pkg/gob/encode.go +++ b/src/pkg/gob/encode.go @@ -473,7 +473,7 @@ func (enc *Encoder) encOpFor(rt reflect.Type) (encOp, int) { elemOp, indir := enc.encOpFor(t.Elem()) op = func(i *encInstr, state *encoderState, p unsafe.Pointer) { slice := (*reflect.SliceHeader)(p) - if slice.Len == 0 { + if !state.sendZero && slice.Len == 0 { return } state.update(i) @@ -495,7 +495,7 @@ func (enc *Encoder) encOpFor(rt reflect.Type) (encOp, int) { // the iteration. v := reflect.NewValue(unsafe.Unreflect(t, unsafe.Pointer((p)))) mv := reflect.Indirect(v).(*reflect.MapValue) - if mv.Len() == 0 { + if !state.sendZero && mv.Len() == 0 { return } state.update(i)