summaryrefslogtreecommitdiff
path: root/src/pkg/gob/encode.go
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2010-06-21 13:19:29 -0700
committerRuss Cox <rsc@golang.org>2010-06-21 13:19:29 -0700
commit4cc75513542d50e96e54b8218bf1bd375205c2d9 (patch)
treec97d37101199813a11bb01a9f0a0fcccac4bc763 /src/pkg/gob/encode.go
parentfa47c8634b287c59a8fb1b01880f63985356f52d (diff)
downloadgolang-4cc75513542d50e96e54b8218bf1bd375205c2d9.tar.gz
reflect: add Type.Bits method, add tags to prohibit conversions
gob: substitute slice for map R=r CC=golang-dev http://codereview.appspot.com/1699045
Diffstat (limited to 'src/pkg/gob/encode.go')
-rw-r--r--src/pkg/gob/encode.go10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/pkg/gob/encode.go b/src/pkg/gob/encode.go
index 93f9e509b..76032389e 100644
--- a/src/pkg/gob/encode.go
+++ b/src/pkg/gob/encode.go
@@ -601,7 +601,7 @@ func encodeMap(b *bytes.Buffer, rt reflect.Type, p uintptr, keyOp, elemOp encOp,
return state.err
}
-var encOpMap = map[reflect.Kind]encOp{
+var encOpMap = []encOp{
reflect.Bool: encBool,
reflect.Int: encInt,
reflect.Int8: encInt8,
@@ -624,8 +624,12 @@ var encOpMap = map[reflect.Kind]encOp{
// the indirection count to reach it.
func encOpFor(rt reflect.Type) (encOp, int, os.Error) {
typ, indir := indirect(rt)
- op, ok := encOpMap[typ.Kind()]
- if !ok {
+ var op encOp
+ k := typ.Kind()
+ if int(k) < len(encOpMap) {
+ op = encOpMap[k]
+ }
+ if op == nil {
// Special cases
switch t := typ.(type) {
case *reflect.SliceType: