goprotobuf: Various improvements to extension handling.
R=r
CC=golang-dev
http://codereview.appspot.com/4917043
diff --git a/proto/encode.go b/proto/encode.go
index 3952dc4..5736153 100644
--- a/proto/encode.go
+++ b/proto/encode.go
@@ -576,9 +576,12 @@
// Encode an extension map.
func (o *Buffer) enc_map(p *Properties, base uintptr) os.Error {
- v := *(*map[int32][]byte)(unsafe.Pointer(base + p.offset))
- for _, b := range v {
- o.buf = append(o.buf, b...)
+ v := *(*map[int32]Extension)(unsafe.Pointer(base + p.offset))
+ if err := encodeExtensionMap(v); err != nil {
+ return err
+ }
+ for _, e := range v {
+ o.buf = append(o.buf, e.enc...)
}
return nil
}